【问题标题】:JTA Transaction with weblogic doesn't work as expected使用 weblogic 的 JTA 事务无法按预期工作
【发布时间】:2012-05-16 02:03:32
【问题描述】:

我的应用程序已锁定数据库表,因为 JTA 尚未使用回滚或提交命令完成您的操作。

应用程序在具有两台托管服务器的集群中通过 weblogic 10.3 运行。

访问数据库的方法是同步的,其中方法内部的第一部分执行查询,第二部分调用另一个方法来执行合并。这个方法有注解@Transaction(read-only=false)。

JTA 事务由 weblogic 执行。

我的问题是,根据所描述的场景,什么会在数据库中生成锁?

【问题讨论】:

  • 您是否通过 JPA 访问 EJB 中的数据库? “同步访问数据库的方法”到底是什么意思,所以该方法是什么。比如“public synchronized void myMethod()”?

标签: java jakarta-ee weblogic jta


【解决方案1】:

在我看来是线程问题,没有获得锁。

访问数据库的方法在第一部分同步 在方法内部执行一个查询,第二个调用另一个 方法来执行合并。

检查两个方法是否需要两个不同的锁,如果是则可能导致死锁,如果方法1中的线程一直等待锁访问方法2。

【讨论】:

  • 这些方法只调用一个方法,在这个方法内部我调用了 dao 方法,其中我有注释 @Transacition(readOnly=false)。这里的问题是我是否有可能陷入死锁,为什么 JTA 没有在 30 秒后回滚(时间设置)。另一个问题:我的应用程序有一个同步的方法,weblogic 如何管理节点以仅使用一个托管服务器来处理这种情况?
  • 这里的重点是,weblogic 是否有可能失去了 JTA 控制,并且有一段时间它让一些连接锁定在数据库上?还有一点是:有没有可能是weblogic失去了应用控制,不抛出超时异常?
猜你喜欢
  • 2021-05-11
  • 1970-01-01
  • 1970-01-01
  • 2010-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-22
  • 1970-01-01
相关资源
最近更新 更多