是否可以使用@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+使您有可能:
- 在独立文件中定义
outbound-socket-binding
,security-realm
和remote-outbound-connection
(都指向远程JBoss实例)。 - 将
jboss-ejb-client.xml
添加到打包应用程序的META-INF文件夹中,并为应用程序所需的每个连接添加remoting-ejb-receiver
。 - 使用
@EJB(lookup = "
注入远程EJB") @EJB(lookup = "
")
如果需要进一步的细节,请告诉我。
看看:
- 用于远程连接的JBoss配置
- 关于Glassfish-Glassfish远程连接的文章