【问题标题】:Testing EJB 3.1 with JUnit gets error Invalid resource使用 JUnit 测试 EJB 3.1 得到错误 Invalid resource
【发布时间】:2012-08-07 06:10:59
【问题描述】:

我正在尝试在 netbeans 中使用 JUnit 测试无状态 bean。此 bean 使用 EntityManager。

@Stateless
public class myEjb{
    @PersistenceContext
    private EntityManager em;

    public MyResult getResult(){
        return em.find(...);
    }
}

然后我写一个测试类。

public class myTest{
    private static EJBContainer ec;
    private static Context ctx;

    @BeforeClass
    public static void setUpClass(){
        ec = EJBContainer.createEJBContainer();
        ctx = ec.getContext();
    }
    ....
}

当我运行测试时,它不起作用。我收到以下消息: 无效资源:mydb__pm 执行此行时出现错误:

ec = EJBContainer.createEJBContainer();

如果通过删除实体管理器来更改我的 bean,它会起作用。所以,看来我的实体管理器有问题。 我的 persistence.xml 文件很简单:

<persistence version="2.0" ...>
  <persistence-unit name="MetisDemoPU" transaction-type="JTA">
    <jta-data-source>MyDb</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties/>
  </persistence-unit>
</persistence>

最后,我创建了一个 JSF 托管 bean,它调用我的 EJB(它使用实体管理器)并且它可以工作。

@ManagedBean
@RequestScoped
public class myManagedBean{
    @EJB
    private OfferEjb offerEjb;

    ...
}

任何帮助将不胜感激!

【问题讨论】:

    标签: junit persistence java-ee-6 entitymanager


    【解决方案1】:

    好的,我找到了解决问题的方法。我现在可以使用 JUnit 来测试我的会话 bean 和持久性上下文。 我不是专家,所以我的解释可能不完整。 在 netbeans 7.2 中,有一个用于测试的嵌入式 glassfish 服务器。有必要在 domain.xml 文件中配置 jdbc 参数,然后对我来说它可以工作。 在我的电脑上,这个文件在

    C:\Program Files\glassfish-3.1.2.2\glassfish\domains\domain\
    

    我只是添加了一个 jdbc 连接池和一个 jdvc jndi。

    This article contains more details.

    【讨论】:

      猜你喜欢
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-11
      • 2011-02-15
      • 1970-01-01
      相关资源
      最近更新 更多