编程语言
首页 > 编程语言> > JPA2示例嵌入式Java EE容器?

JPA2示例嵌入式Java EE容器?

作者:互联网

我想为JPA2创建一些可以在Java EE容器中运行的示例代码.

运行这些示例通常需要具有Java EE服务器,但是我想使事情变得更简单,并使用嵌入式容器Maven运行它们.

哪种比较适合这种“项目”?

嵌入式Glassfish,JBoss微容器还是OPENEJB?

其他 ?

谢谢 !

解决方法:

在容器外部测试EJB的问题是不执行注入.我找到了这个解决方案.在无状态会话Bean中,您具有注释@PersistenceContext
在独立的Java-SE环境中,您需要自己注入entitymanager,这可以在单元测试中完成.这是嵌入式服务器的快速替代方案.

@Stateless
public class TestBean implements TestBusiness {

    @PersistenceContext(unitName = "puTest")
    EntityManager entityManager = null;

    public List method() {
        Query query = entityManager.createQuery("select t FROM Table t");
        return query.getResultList();
    }
}

单元测试实例化了实体管理器,并将其“注入”到bean中.

public class TestBeanJUnit {

    static EntityManager em = null;
    static EntityTransaction tx = null;

    static TestBean tb = null;
    static EntityManagerFactory emf = null;

    @BeforeClass
    public static void init() throws Exception {
        emf = Persistence.createEntityManagerFactory("puTest");
    }

    @Before
    public void setup() {
        try {
            em = emf.createEntityManager();
            tx = em.getTransaction();
            tx.begin();
            tb =  new TestBean();
            Field field = TestBean.class.getDeclaredField("entityManager");
            field.setAccessible(true);
            field.set(tb, em);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    @After
    public void tearDown() throws Exception {
        if (em != null) {
            tx.commit();
            em.close();
        }
    }

}

标签:jpa,jpa-2-0,java,java-ee
来源: https://codeday.me/bug/20191208/2093463.html