Guice-Persist:尝试在已关闭的EntityManager上执行操作

时间:2012-05-03 12:43:57

标签: gwt guice guice-persist

我有一个由maven管理的应用程序,有两个模块:一个用于持久性,另一个用于webapp本身(gwt)。

我在持久性模块中的测试就像一个魅力,但是,在webapp中,当我多次执行相同的方法时,我得到了java.lang.IllegalStateException: Attempting to execute an operation on a closed EntityManager.

我使用guice-persist将实体管理器注入到我的DAO中,并且我所有的DAO方法都有@Transactional注释。

在我的webapp中,我提出了:     公共类ScuvServletModule扩展了ServletModule {

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

如果我删除了PersistFilter,它就会发送,但随机抛出一个Transaction Closed异常或类似的东西。

任何帮助?

1 个答案:

答案 0 :(得分:3)

我发现了问题。这是PersistFilter。显然,它是一个Singleton,我的DAO也是单身,但是EntityManager不是。

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