我有2個會話bean,OrderBean和InventoryBean,它們被部署在不同的weblogic服務器上。是否可以使用@EJB註釋通過不同的服務器注入EJB?
OrderBean需要訪問InventoryBean以檢查供應是否充足。
目前,我使用JNDI查找來查找InventoryBean,它工作正常。
現在我想知道是否可以使用@EJB通過在xml或其他地方提供JNDI名稱和URL來注入InventoryBean。
我有2個會話bean,OrderBean和InventoryBean,它們被部署在不同的weblogic服務器上。是否可以使用@EJB註釋通過不同的服務器注入EJB?
OrderBean需要訪問InventoryBean以檢查供應是否充足。
目前,我使用JNDI查找來查找InventoryBean,它工作正常。
現在我想知道是否可以使用@EJB通過在xml或其他地方提供JNDI名稱和URL來注入InventoryBean。
我認爲這不可能通過EJB批註,但您可以在您的WebLogic服務器上配置foreign JNDI,並將遠程EJB引用爲本地JNDI名稱。雖然,我從來沒有嘗試過,但我認爲它應該起作用。
最後我找到了一種方法來做到這一點。
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;
這是非常特定於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>")
讓我知道,如果需要進一步的細節。
給看看:
謝謝,其實我已嘗試之前,它工作正常,就像你說的。 – Eric
但它是否可能通過註釋,或者我必須通過編碼來查找本地jndi? –