为什么只有JNDI被用来访问远程EJB(不同的JVM,不同的主机)?为什么不使用@EJB注释?为什么要使用JNDI? - 远程EJB调用
在所有的EJB书籍中都提到您可以使用@EJB注释来访问远程EJB。
实施例:http://docs.oracle.com/javaee/7/tutorial/doc/ejb-intro004.htm
32.4.4远程客户端
企业bean的远程客户端具有以下特征。
它可以在不同的机器,并从企业Bean它 访问不同的JVM上运行。(它不要求在不同的JVM运行。)
它可以是一个Web组件,应用程序客户端,或其他企业bean
它可以是一个Web组件,应用程序客户端,或另一个企业bean。
对于远程客户端,企业bean的位置是透明的。
企业bean必须实现业务接口。也就是说,远程客户端可能不会通过无界面视图访问企业Bean。
要创建的企业Bean允许远程访问,你必须:
装饰企业bean与@Remote注释业务接口:
@Remote公共接口InterfaceName {...}
或者用@Remote修饰bean类,指定业务接口或 int erfaces:
@Remote(InterfaceName.class) 公共类BeanName实现InterfaceName中{...}
到的企业Bean实现远程业务接口是通过两种依赖实现 客户端访问注入或JNDI查找。
要通过 依赖注入获得对企业bean的远程业务接口的引用,使用javax.ejb。EJB注释并指定企业bean的 远程业务接口名称:
@EJB示例示例;
要通过JNDI获得对企业bean的远程业务接口的引用 查找,使用javax.naming.InitialContext中接口的查找方法:
ExampleRemote示例=(ExampleRemote) InitialContext.lookup( “Java的:全球/对myApp/ExampleRemote”);
上面的代码不正确?我还没有看到一个使用依赖注入(@EJB)来访问远程EJB的任何代码。这不可能?
几个后说,这是不可能的使用@ EJB注释用于调用远程EJB:
PD:对不起。我的英语基础。
作为你的[第二个链接(http://stackoverflow.com/a/16518704/3167508)状态,“只能当应用程序在同一个服务器实例部署使用@EJB注释。” – EJP 2014-09-02 00:34:34
它是由相矛盾如下:“企业bean的远程客户机具有以下特征: 它可以在不同的机器和从企业bean它访问不同的JVM上运行” – DavidJesus03 2014-09-02 00:43:54
也:“一个企业级bean实现远程业务接口是通过两种依赖注入(@EJB)或JNDI查找完成客户端的访问。” – DavidJesus03 2014-09-02 00:48:00