2012-05-03 45 views
2

我有一個由maven管理的應用程序,有兩個模塊:一個用於持久性,另一個用於webapp本身(gwt)。Guice-Persist:嘗試在關閉的EntityManager上執行操作

我在持久性模塊中的測試就像一個魅力,但在webapp中,當我多次執行相同的方法時,我得到了一個java.lang.IllegalStateException: Attempting to execute an operation on a closed EntityManager.

我使用guice-persist將實體管理器注入我的DAO,並且我所有的DAO方法都有@Transactional註釋。

在我的web應用程序,我把: 公共類ScuvServletModule擴展的servlet {

@Override 
    protected void configureServlets() { 
     super.configureServlets(); 
     install(MyPersistenceAPI.getModule()); // return my module and install it 
     filter("/*").through(PersistFilter.class); 
     /// another bindings... 
    } 
} 

如果我刪除PersistFilter,它wotks,而是隨機拋出一個交易關閉異常或類似的東西。

任何幫助?

回答

3

我發現了這個問題。這是PersistFilter。當然,它是一個單例,我的DAO也是單例,但是EntityManager不是。

所以,現在我注入一個Provider<EntityManager>而不是EntityManager,它就像一個魅力。

相關問題