是否可以使用@EJB注释通过不同的服务器注入EJB?

我有2个会话bean,OrderBean和InventoryBean,它们部署在不同的weblogic服务器上。

OrderBean需要访问InventoryBean以检查供应是否足够。

目前,我使用JNDI查找找到InventoryBean,它工作正常。

现在我想知道是否可以通过在xml或其他地方提供JNDI名称和URL来使用@EJB来注入InventoryBean。

最后我找到了一种方法来做到这一点。

一世。 在weblogic服务器上配置外部JNDI,并将远程EJB链接到本地​​JNDI名称。

例如:

本地JNDI:
 InventoryBean#com.pkg.InventoryBean(MAPPEDNAME#FULLNAME)
链接到
远程JNDI:
 ServiceBean#com.pkg.InventoryBean 

II。 在ejb-jar.xml中配置ejb-ref

 ejb-ref-name  - > ejb / InventoryBean
 remote  - > com.pkg.InventoryService
 mapped-name  - > InventoryBean

III。 在OrderBean中添加@EJB注释

 @EJB(name =“ejb / InventoryBean”)
 private InventoryService inventoryService;

我认为通过EJB注释是不可能的,但是您可以在WebLogic服务器上配置外部JNDI并将远程EJB称为本地JNDI名称。 虽然,我从未尝试过,但我认为它应该有效。

它非常具体AS。

JBoss 7+使您有可能:

  1. 在独立文件中定义outbound-socket-bindingsecurity-realmremote-outbound-connection (都指向远程JBoss实例)。
  2. jboss-ejb-client.xml添加到打包应用程序的META-INF文件夹中,并为应用程序所需的每个连接添加remoting-ejb-receiver
  3. 使用@EJB(lookup = "")注入远程EJB @EJB(lookup = "")

如果需要进一步的细节,请告诉我。

看看:

  • 用于远程连接的JBoss配置
  • 关于Glassfish-Glassfish远程连接的文章