我有一个无状态会话bean和一个充当客户端的独立java程序。当接口标记为@Remote时,bean方法执行得很好。但是,当我用@Local而不是@Remote标记该接口时,我得到以下异常。
[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?]
但我预计即使后者也能工作,因为它与代码执行的计算机相同。
看到这种行为,我假设,Application-Server和Standalone-Java-Program使用不同的JVM实例而不是单个JVM实例,因此该客户端只能通过远程接口访问。
这个假设是否正确?
谢谢!
答案 0 :(得分:4)
是的,这是正确的。
@Local
接口仅在同一个应用程序服务器中使用。应用程序服务器启动一个JVM实例,而独立客户端启动另一个JVM实例。