[英]How do I enable EJB injection in dependent projects
我有一個Java EE項目,該項目從依賴項目中實例化了一個對象的實例。 現在,該從屬項目希望創建自己的EJB並將其注入到其中一個類中。 從屬項目不引用父項目,但應在父項目的容器內運行。
部署父項目時,我會在日志中看到一條消息,指出已發現我的服務bean以及父項目中的其余bean:
2014-04-28T21:30:56.240-0400|INFO: EJB5181:Portable JNDI names for EJB DependentProjectServiceBean etc.
但是,當我嘗試使用@EJB批注將bean注入依賴項目時,什么也沒發生(它留為null)。
我一直在試圖找出如何正確配置這些項目的方法,以便可以在依賴項目中使用EJB和JPA,但是我感覺我不知道正確的搜索詞,因為我發現的所有內容都不像他們解決了這個問題。 我在依賴項目中包含的Maven依賴項與在父項目中包含的Maven依賴項相同,並且Eclipse在注釋方面看起來很酷。 一旦部署,他們似乎什么都不做。
如何在我的依賴項目中啟用EJB和JPA?
編輯:這是我正在使用的代碼的粗略概述。
父級
public class ParentProjectClass {
@EJB
ParentServiceBean psb;
public void cat(){
psb.doStuff(); //no problems
SomeDependentClass sdc = new SomeDependentClass();
sdc.baz();
}
}
相關項目
public class SomeDependentClass {
private AnotherDependentClass adc;
public SomeDependentClass(){
adc = new AnotherDependentClass();
}
public void baz(){
adc.foo();
}
}
public class AnotherDependentClass {
@EJB
DependentProjectServiceBean dpsb;
foo(){
dpsb.bar(); //NULL POINTER EXCEPTION
}
}
@Stateless
public class DependentProjectServiceBean {
public void bar(){ //bar }
}
您不能在簡單的類(本身不是EJB或JSF ManagedBean)中使用@EJB注釋注入EJB。 最簡單的解決方案是將您的從屬項目轉換為EJB項目。 如果您不能這樣做,則可以嘗試使用手動JNDI查找將其注入,這是代碼示例:
// Retrieve the initial context for JNDI.
Context context = new InitialContext();
// Retrieve the home interface using a JNDI lookup
dpsb = (DependentProjectServiceBean) context.lookup("java:comp/env/ejb/DependentProjectServiceBean");
用您的JNDI路徑替換java:comp / env / ejb / DependentProjectServiceBean
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.