0

我们的应用程序是一个广泛使用 Guice-Persist 和 Guice-Servlet 的 Java-GWT 应用程序。我们使用 Guice-Persist 的 session-per-HTTPRequest 功能从未遇到过问题,这与 Warp-persist 最初使用的功能相似。

根据文档,我们正在通过 PersistFilter 类过滤我们的 webapp。根据此处的 Guice 文档,我们的 persistence.xml 文件具有 transaction-type="RESOURCE_LOCAL" 。

现在由于某种奇怪的原因,我们的 PROD 环境显示错误

“这个线程上的工作已经开始。看起来你已经调用了 UnitOfWork.begin() 两次,而在两者之间没有对 end() 进行平衡调用。”

在此处输入图像描述

看起来 Guice-Persist 不支持嵌套工作单元的问题。关联

我们最近还从休眠 3.6.3.Final 迁移到了 4.1.4.Final。不确定他是否会与guice有某种不兼容...

在这一点上,我们完全不知道为什么会发生这种情况。

4

2 回答 2

3

当 Hibernate 隐式打开事务时,我遇到了这种症状,因为我忘记在最外面的逻辑事务大括号中添加 @Transaction 注释。

要查明问题,请在数据库层以及 begin() 和 end() 中设置断点,以发现在没有现有事务的情况下发生持久性(读取或写入无关紧要)的情况。

于 2012-06-12T17:57:30.847 回答
1

这已在 Google 的 Guice 网站上进行了报道:

问题 597:持续扩展:UnitOfWork.begin() 在多次调用时抛出 IllegalStateException

于 2012-09-28T11:10:02.060 回答