我有两个会话Bean,OrderBean和InventoryBean,它们部署在不同的Weblogic服务器上。
OrderBean需要访问InventoryBean以检查供应是否充足。
目前,我使用JNDI查找来定位InventoryBean,它运行良好。
现在我想知道是否可能使用@EJB通过xml或其他地方提供JNDI名称和URL来注入InventoryBean。
最终我找到了一种方法来实现这个。
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;
我认为通过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 = "<jndi_name>")
注入远程EJB。如果需要更多详细信息,请告诉我。
请查看以下内容: