2012-05-03 44 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,它就像一个魅力。

相关问题