根据我的引用,@ Local会话bean可以在部署bean的同一JVM下运行(客户端和服务器在同一个JVM上运行)。
我已经实现了一个简单的无状态本地会话bean并部署在我的GlassFish Server中(也尝试过JBoss服务器)。
我的独立客户端查找会话bean,但无法访问此本地会话。我确实尝试过可以访问的@Remote。
此时,服务器和客户端都在相同/单个JVM(在我的机器上)中运行。
是否可以从独立客户端应用程序访问本地会话bean?有没有具体的访问方式?
我的代码是:
无统计的本地会话bean
@Stateless
public class TicketBookingImpl implements TicketBookingLocal {
public String doBooking(String name) {
return "Ticket Booked for " + name;
}
}
查找代码
public static void main(String[] args) {
try {
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
props.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
props.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");
props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
final Context context = new InitialContext(props);
System.out.println("Doing lookup");
TicketBooking ticketBooking = (TicketBooking) context.lookup("java:global/ejb-work-1/TicketBookingImpl");
答案 0 :(得分:1)
不幸的是,您只能在同一部署单元(通常是耳机)中使用本地接口。
在两种情况下你必须使用远程接口:
查看此链接以获取有关本地/远程接口使用的更详细建议:Local vs. Remote Interfaces in EJB (EJB3)