首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Guice-Persist:尝试在已关闭的EntityManager上执行操作

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

Stack Overflow用户
提问于 2012-05-03 20:43:57
回答 1查看 3.3K关注 0票数 2

我有一个由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的公共类{

代码语言:javascript
复制
    @Override
    protected void configureServlets() {
       super.configureServlets();
       install(MyPersistenceAPI.getModule()); // return my module and install it
       filter("/*").through(PersistFilter.class);
       /// another bindings...
    }
}

如果我删除了PersistFilter,它会工作,但会随机抛出一个事务关闭异常或类似的异常。

有什么帮助吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-08 04:30:30

我找到问题了。这就是PersistFilter。显然,它是一个单例,我的DAO也是单例,但EntityManager不是。

因此,现在我注入一个Provider<EntityManager>而不是EntityManager,它就像一个护身符一样工作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10431640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档