簡體   English   中英

JPA2示例嵌入了Java EE容器?

[英]JPA2 samples embedded Java EE container?

我想為JPA2創建一些可以在Java EE容器中運行的示例代碼。

運行這些示例通常需要具有Java EE服務器,但我希望使事情更容易,並使用嵌入式容器+ maven運行它們。

對於這種“項目”哪一種更好?

Glassfish嵌入式,JBoss微容器或OPENEJB?

其他 ?

謝謝 !

在容器外測試EJB的問題是不執行注入。 我找到了這個解決方案 在無狀態會話bean中,您在獨立的Java-SE環境中有一個注釋@PersistenceContext,您需要自己注入實體管理器,這可以在單元測試中完成。 這是嵌入式服務器的快速替代方案。

@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();
    }
}

unittest實例化entitymanager並將其“注入”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();
        }
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM