我们的应用程序是一个广泛使用Guice-Persist和Guice-Servlet的Java-GWT应用程序。使用Guice-Persist的session-per-HTTPRequest特性与Warp-persist最初使用的类似,我们从来没有遇到过问题。
我们正在根据文档通过PersistFilter类过滤我们的webapp。根据Guice文档here,我们的persistence.xml文件的transaction-type="RESOURCE_LOCAL“。
现在,由于某种奇怪的原因,我们的PROD环境显示错误
“此线程上的工作已经开始。看起来您已经调用了UnitOfWork.begin()两次,但在这两次调用之间没有平衡调用end()。”

似乎有一个问题,在Guice-Persist中不支持嵌套的工作单元。LINK
我们最近也从hibernate 3.6.3.Final迁移到了4.1.4.Final。我不确定他会不会和guice有某种不相容...
在这一点上,我们完全不知道为什么会发生这种情况。
发布于 2012-06-13 01:57:31
当Hibernate隐式打开事务时,我就遇到了这种症状,因为我忘了在最外层的逻辑事务括号中添加@Transaction注释。
为了准确定位问题,在数据库层以及begin()和end()中设置断点,以便在没有现有事务的情况下发现持久性(读或写都无关紧要)的情况。
发布于 2012-09-28 19:10:02
这已经在Google的Guice网站上报道过了:
Issue 597: Persist Extension: UnitOfWork.begin() throws IllegalStateException when called multiple times
https://stackoverflow.com/questions/10941709
复制相似问题