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上下文不正确初始化。
有人能帮我一下吗?
感谢