2009-10-13 88 views
7

我有2個會話bean,OrderBean和InventoryBean,它們被部署在不同的weblogic服務器上。是否可以使用@EJB註釋通過不同的服務器注入EJB?

OrderBean需要訪問InventoryBean以檢查供應是否充足。

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

現在我想知道是否可以使用@EJB通過在xml或其他地方提供JNDI名稱和URL來注入InventoryBean。

回答

3

我認爲這不可能通過EJB批註,但您可以在您的WebLogic服務器上配置foreign JNDI,並將遠程EJB引用爲本地JNDI名稱。雖然,我從來沒有嘗試過,但我認爲它應該起作用。

+0

謝謝,其實我已嘗試之前,它工作正常,就像你說的。 – Eric

+0

但它是否可能通過註釋,或者我必須通過編碼來查找本地jndi? –

8

最後我找到了一種方法來做到這一點。

i。在weblogic服務器上配置外部JNDI,並將遠程EJB鏈接到本地​​JNDI名稱。

例如:

 
Local JNDI: 
InventoryBean#com.pkg.InventoryBean (MAPPEDNAME#FULLNAME) 
link to 
Remote 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; 
0

這是非常特定於AS的。

的JBoss 7+使得有可能,如果你:

  1. 定義outbound-socket-binding,在獨立的文件security-realmremote-outbound-connection(都指的是遠程JBoss實例)。
  2. jboss-ejb-client.xml添加到打包應用程序的META-INF文件夾中,對於應用程序所需的每個連接都使用remoting-ejb-receiver
  3. 注入遠程EJB與@EJB(lookup = "<jndi_name>")

讓我知道,如果需要進一步的細節。

給看看: