我有一个由maven管理的应用程序,包含两个模块:一个用于持久化,另一个用于webapp本身(gwt)。
我在persistence模块中的测试效果很好,但是在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
,它会工作,但会随机抛出一个事务关闭异常或类似的异常。
有什么帮助吗?
发布于 2012-05-08 04:30:30
我找到问题了。这就是PersistFilter
。显然,它是一个单例,我的DAO也是单例,但EntityManager不是。
因此,现在我注入一个Provider<EntityManager>
而不是EntityManager
,它就像一个护身符一样工作。
https://stackoverflow.com/questions/10431640
复制相似问题