我使用的是WildFly 8.1应用服务器,需要获取位于远程GlassFish服务器上的EJB。我有什么样的选择?我在想的是手动创建InitialContext,提供像GlassFish addres等必要的属性。还有更好的解决方案吗?我可以通过像@Resource这样的注释来获取这个EJB吗?
答案 0 :(得分:0)
我认为这应该回答你的问题:
客户端访问实现远程业务的企业bean 接口是通过依赖注入或JNDI完成的 查找。
获取对远程业务接口的引用 企业bean通过依赖注入,使用javax.ejb.EJB 注释并指定企业bean的远程业务接口 名:
@EJB示例示例;获取对远程企业的引用 通过JNDI查找企业bean的接口,使用 javax.naming.InitialContext接口的查找方法:
ExampleRemote示例=(ExampleRemote) InitialContext.lookup( “Java的:全球/对myApp / ExampleRemote”);
答案 1 :(得分:0)
除了第一个答案之外,重要的是要注意远程EJB 必须实现@Remote
接口:
@Remote
public interface RemoteEJB
鉴于远程EJB上的上述实现,您可以在远程客户端中拥有以下内容:
@EJB
RemoteEJB remoteEJB;
我可以通过像@Resource这样的注释来获取这个EJB吗?
我不相信你可以。 @Resource
最适用于辅助工件,如javax.sql.DataSource
,JMS消息队列和JavaMail会话。
提示:在JNDI查找中使用InitialContext
的代价更高。 According to this answer by a member of the Java EE Expert Group使用SessionContext
可以更好地查找上下文资源。