当前位置: 首页 > 知识库问答 >
问题:

在其他线程异常中回滚了获取事务

周泰
2023-03-14

因此,我在WildFly10应用服务器中配置了2个xa-datsources,我使用的是Hibernate ORM5.2.9。DB为Postgres 9.6

在我的应用程序中,我有一个EJB,它有两个嵌套的for循环,我必须在嵌套循环的每次迭代中从表中读取数据。但过了一段时间我就有了例外

javax.ejb.EJBTransactionRolledBackException:org.hibernate.hibernateException:事务在不同的线程中回滚了!

我不明白为什么会这样。我有一个小的概念验证应用程序,它使用JDBC连接到DB,并且一切都运行良好。

编辑这是抛出我提到的html" target="_blank">异常后的stacktrace:

null

共有1个答案

葛勇锐
2023-03-14

所以我想我知道是怎么回事了。看起来,当我的EJB方法被调用时,容器会创建一个全局JTA事务,或者类似的事情,该事务有5分钟的超时时间(Wildfly的默认值)。由于我的业务逻辑(嵌套循环)需要更多的时间来处理,当我再次尝试访问DB时,事务超时并抛出异常。

 类似资料:
  • 问题内容: 在Linux中,可以使用backtrace()库调用来获取回溯,但是它仅返回当前线程的回溯。假设我知道它是TID(或pthread_t)并且可以保证它可以入睡,是否有任何方法可以获取其他线程的回溯? 看来libunwind(http://www.nongnu.org/libunwind/)项目可以提供帮助。问题是CentOS不支持它,因此我不希望使用它。 还有其他想法吗?谢谢。 问题答

  • 我在我正在开发的一个应用程序中使用了Spring和Hibernate,我在处理事务时遇到了一个问题。 我有一个服务类,它从数据库中加载一些实体,修改它们的一些值,然后(当一切都有效时)将这些更改提交给数据库。详细地说: 我得到的错误是这样的: Main.java: RegionService.java:

  • 我在tomcat服务器中使用具有多个数据源配置的JTA原子事务。有时我会遇到以下异常: JTA事务意外回滚(可能是由于超时);嵌套的异常是javax。交易回滚异常:事务被设置为仅回滚 出现这种异常的原因是什么?

  • 问题内容: 我是Java和OOP的新手,这是我的问题。当我运行以下代码时,我得到了 线程“主”中的异常java.lang.StackOverflowError。 问题出在我创建对象的代码中。class不会发生问题。如果在run方法内部创建对象,则代码可以正常工作。你能解释一下为什么吗? 问题答案: 您的类的字段包含类的另一个实例,也有自己的字段,包含的另一个实例,依此类推。 换句话说,当您创建该实

  • 这很好,但并不总是在代码中抛出运行时异常。因此,我挖掘并发现如下所示的rollbackFor; 现在,我必须更改所有代码,以使用RollBackfor更改@Transactional。但是还有其他方法可以将所有@transaction advice属性更改为rollbackFor=exception.class吗?