2010-05-19 68 views
1

我有一个无状态会话bean和一个作为客户端的独立java程序。当接口标记为@Remote时,bean方法执行得很好。但是,当我使用@Local而不是@Remote标记该接口时,出现以下异常。@ EJB 3中的本地注释

[java] javax.naming.NamingException: Could not dereference object [Root exception is java.lang.RuntimeException: Could not find InvokerLocator URL at JNDIaddress "chapter1/HelloUserBean/local"; looking up local Proxy from Remote JVM?] 

但我预计,即使后者的工作,因为它是该代码执行相同的计算机。

看到这种行为,我假设,在应用程序服务器和独立的Java - 程序使用不同的JVM实例,而不是单个JVM实例,因此该客户端只能通过远程接口访问。

这个假设是否正确?

谢谢!

回答

4

是的,它是正确的。

@Local接口只能在同一个应用程序服务器中使用。应用程序服务器启动一个JVM实例,并且您的独立客户端启动另一个JVM实例。

+0

谢谢!它现在清晰:) – stratwine 2010-05-19 12:21:12