资源注入和解决方案

时间:2014-06-28 16:10:44

标签: java-ee jndi

我使用的是WildFly 8.1应用服务器,需要获取位于远程GlassFish服务器上的EJB。我有什么样的选择?我在想的是手动创建InitialContext,提供像GlassFish addres等必要的属性。还有更好的解决方案吗?我可以通过像@Resource这样的注释来获取这个EJB吗?

2 个答案:

答案 0 :(得分:0)

我认为这应该回答你的问题:

  

客户端访问实现远程业务的企业bean   接口是通过依赖注入或JNDI完成的   查找。

     

获取对远程业务接口的引用   企业bean通过依赖注入,使用javax.ejb.EJB   注释并指定企业bean的远程业务接口   名:

     

@EJB示例示例;获取对远程企业的引用   通过JNDI查找企业bean的接口,使用   javax.naming.InitialContext接口的查找方法:

     

ExampleRemote示例=(ExampleRemote)           InitialContext.lookup( “Java的:全球/对myApp / ExampleRemote”);

http://docs.oracle.com/javaee/6/tutorial/doc/gipjf.html

答案 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可以更好地查找上下文资源。

相关问题