Jpa 如何使@EJB注入在服务器上工作?

Jpa 如何使@EJB注入在服务器上工作?,jpa,ejb-3.1,glassfish-4,Jpa,Ejb 3.1,Glassfish 4,看看,上面写着: 如果您不想使用应用程序客户机容器,而只是通过java命令运行应用程序客户机类,那么就不可能进行注入,您必须执行JNDI查找 然而,考虑到我正在尝试注入一个DAOBean,如果我不能进行自动注入,这意味着我的应用程序必须手动执行JNDI查找和所有事务开始/结束,如果@EJB实际工作,我将免费获得这些事务 然而,由于所有内容都在同一个EclipseEJB项目中(当我在动态Web项目中使用客户机代码时,它也使用相同的空句柄失败),所以肯定有一种简单的方法可以让它全部工作吗?有人能指出

看看,上面写着:

如果您不想使用应用程序客户机容器,而只是通过java命令运行应用程序客户机类,那么就不可能进行注入,您必须执行JNDI查找

然而,考虑到我正在尝试注入一个DAOBean,如果我不能进行自动注入,这意味着我的应用程序必须手动执行JNDI查找和所有事务开始/结束,如果@EJB实际工作,我将免费获得这些事务

然而,由于所有内容都在同一个EclipseEJB项目中(当我在动态Web项目中使用客户机代码时,它也使用相同的空句柄失败),所以肯定有一种简单的方法可以让它全部工作吗?有人能指出我做错了什么吗

最后,不需要DAO,但是如果我在EJB中替换DAO:

 @EJB MyDao dao;
以更直接的方式:

@PersistenceContext private EntityManager em;
我仍然得到类似的空值;这是相同的注入失败问题吗


NB:我刚刚注意到:

这是一个(显然是在web服务堆栈中)


我正在运行v4.0 Build 89,它仍然有这个bug?这是否意味着我必须以冗长的方式执行所有JPA操作?

我最终发现问题/问题在于,为了使用
@PersistenceContext
的注入,类本身必须是一个bean。这一点在以下章节中有所暗示:

我可以删除这个问题,但留下这个答案可能会给某些人一个提示,或者至少向他们展示一个EJB和JPA的最小工作示例

@Stateless 
public class CustomerService { 

  @PersistenceContext 
  private EntityManager entityManager; 

  public void addCustomer(Customer customer) { 
    entityManager.persist(customer); 
  }
}