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

8

我有两个会话Bean,OrderBean和InventoryBean,它们部署在不同的Weblogic服务器上。

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

目前,我使用JNDI查找来定位InventoryBean,它运行良好。

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

3个回答

8

最终我找到了一种方法来实现这个。

i. 在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;

3

我认为通过EJB注解不可能实现,但是您可以在WebLogic服务器上配置外部JNDI并将远程EJB作为本地JNDI名称进行引用。虽然我从未尝试过,但我认为这应该可行。


谢谢,实际上我之前尝试过了,就像你说的一样,它很好用。 - Eric
但是可以通过注释实现吗,还是必须编写代码来查找本地jndi? - Antonio Petricca

0

这是非常AS特定的。

如果您使用JBoss 7+,可以通过以下方式实现:

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

如果需要更多详细信息,请告诉我。

请查看以下内容:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接