2010-09-27 64 views
0

我正在創建一個試圖尊重特定外觀/實現設計模式的EJB3模塊。我的外觀應該完全沒有EJB。如何定義EJB3會話bean的構造函數

我在這個模塊中有2個類:一個實體bean和一個會話bean,它是這個實體的管理者。該管理器包含一個EntityManager屬性。

我也有一個工廠,它實例化我的管理器bean,但是這個工廠並不知道管理器的實現(因此不知道EJB)。工廠只能使用屬性文件檢索經理類的名稱。然後,工廠將實例化管理器:

Class lClass = Class.forName (lClassName); 
corporateActionManager = (ICorporateActionManager) lClass.newInstance(); 

我的問題是:我可以宣佈我的經理人實現一個構造函數,然後,該構造函數中,初始化我的EntityManager?

通常情況下,我只想用@PersistenceContext註解EntityManager的上面:

@PersistenceContext(unitName = "my_persistence_unit") 
private EntityManager em; 

但很顯然,當類直接實例,這並不工作。

我想是這樣的:

public CorporateActionManagerImpl() { 
    Context jndi; 
    try { 
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("my_persistence_unit") 
    em = emf.createEntityManager(); 
    } catch (NamingException e1) { 
    e1.printStackTrace(); 
    } 
} 

但後來我得到一個NoInitialContextException,顯然我的JNDI上下文不正確初始化。

有人能幫我一下嗎?

感謝

回答

0

我結束了創建另一個「經理」級,這將封裝的會話bean,並在構造函數初始化。

它確實增加了另一層,但最終解決起來要容易得多。