我有一個Java Web服務模塊和ejb modulein netbeans(企業應用程序的所有部分)。 Web服務正在使用@EJB注入來使用ejb類。 在ejb模塊裏面我有一個TransactionManager類,它不是一個企業bean。只是一個POJO課程。我試圖注入EntityManager使用EntityManager在ejb容器中的Pojo類內部爲null
@PersistanceContext(unitName = "testPU")
EntityManager em;
但em是allways null。 我從bean中調用TransactionManager類,如果我在bean類中聲明瞭EntityManager聲明,它在bean類中注入得很好。但在POJO中它始終爲空。
我是EJB新手(使用版本JEE7)。你能指導我嗎?
回覆Shailendra: 我的bean和pojo在同一個jar文件中,它有bean.xml和persistence.xml。 我試圖使TransactionManager類爲bean,使用@Stateless和@Local,但在ejb類和TransactionManager類之間有一些POJO類,當我試圖從其父POjo類使用 訪問TransactionManager類時@EJB TransactionManager transactionManager; 該對象也返回null。
親愛Shilendra,感謝您的答覆 下面是我的EJB類
@Stateless
@Local(IMyService.class)
public class MyService extends MyBase implements IMyService
{
MyComponent component = null;
public void doSomething(X x)
{
component = new MyComponent();
component.doSomething(x);
}
}
我有一個POJO類作爲MyComponent的
public class MyComponent extends MyBase implements IMyComponent
{
TransactionManager tManager = null;
public void doSomething(X x)
{
tManager = new TransactionManager();
tManager.doSomething(x);
}
}
和事務管理類,我想依賴注入的類爲PersistenceContext完成
public class TransactionManager extends MyBase implements ITransactionManager
{
@PersistenceContext(unitName="TestPU")
EntityManager em;
public void doSomething(X x)
{
em.persist(x);
}
}
嗨, 你能給我一個樣本 – vilsad
@vilsad我對CDI做的不多,你可以試試'@Inject EntityManager'看它是否有效。 –