簡體   English   中英

如何在相關項目中啟用EJB注入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM