[英]CDI EntityManager injection VS @PersistenceContext entitymanager on an EJB container
[英]CDI Cross container injection
我們很難找到從另一個容器中注入SessionBean的正確方法。
假設我們有兩個耳文件earA和earB,以及一個共享的jar:
EARA
@Stateless
public class MyBean implements BeanInterface{...}
EARB
@Stateless
public class OtherBean{
@Inject BeanInterface myBean;
}
apiJar
earA和earB中都存在一個包含BeanInterface的jarfile
我們不想通過@EJB顯式使用JNDI名稱,因為earB將由外部客戶實現和部署。
我們想讓earB通過BeanInterface注入MyBean盡可能容易(並且對earA的了解最少)。
CDI無法在EAR中使用。
您可以在EAR B中使用@EJB(lookup=...)
來獲取對在EAR A中實現的EJB的引用。
在這種情況下,您不需要知道EAR A中的實現類,只需知道其JNDI名稱。 您可能還應該使EAR A中的EJB公開遠程接口。
如果將兩個EAR部署在不同的服務器實例上,則還需要一些特定於供應商的配置才能執行遠程JNDI查找。
您也可以隱藏此@EJB(lookup=...)
並通過執行以下描述的操作使用CDI注入EJB: http : //whoopdicity.blogspot.ro/2014/07/developing-dynamic-jee-service-client。 HTML
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.