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

无需提交的JTA超时

娄弘
2023-03-14

我有一个非常基本的JTA问题。

我们使用Spring的html" target="_blank">AOP将WebLogicJtaTransactionManager切入点应用于服务类中的任何方法......并且我们设置tx: method timeout="60"。

有趣的是在该服务中,我们运行一个select语句从数据库中检索记录(使用Hibernate/JPA),然后去做一些与数据库/事务无关的工作。该方法运行时间超过60秒,并且永远不会抛出超时异常,也永远不会回滚事务。我们不会更新或创建新对象来持久化。

此外,我们在WebLogic服务器上将JTA配置为180秒后超时。。。应用程序仍然没有超时。

WLS文档说“事务超时(以秒为单位)。如果事务在此时间之后仍处于“活动”状态(从begin()开始计数),它将自动回滚。但是,一旦事务进入准备状态,此超时参数将不适用;将重试事务,直到提交所有资源。”

这种行为是否与JTA没有任何可提交的内容,因此超时不一定适用这一事实有关?

或者它是否与这样一个事实有关:因为没有真正的数据库(插入/更新/删除),所以事务永远不会处于真正的活动状态?

共有1个答案

赵俊远
2023-03-14

JTA事务超时仅适用于基于XA的数据源。您能否确认数据源是使用XA数据库驱动程序设置的?

 类似资料:
  • 我在JTA和Wildfly8中使用Eclipselink,问题是在提交用户事务并将数据插入数据库后,它不会更新相关实体,所以如果我重新加载页面或打开页面的新实例,它加载数据时不会插入行。

  • 持久性提供程序只需要在Java EE容器环境中支持CDI注入实体侦听器。如果未启用CDI,则持久性提供程序不得调用依赖于CDI注入的实体侦听器。 当从Java EE环境中调用时,实体的回调侦听器共享调用组件的企业命名上下文,并且在调用回调方法时在调用组件的事务和安全上下文中调用实体回调方法。 例如,如果事务提交是事务属性为的会话bean业务方法正常终止的结果,则和回调将在该组件的命名上下文、事务上

  • 问题内容: 我的页面上有一个表单,并且正在使用Javascript/JQuery向表单中动态添加控件。在某个时候,我需要在客户端的表单中获取所有值作为集合或查询字符串。我不想提交表单,因为我希望将表单值以及客户端上拥有的其他信息传递给后端WCF / Ajax服务方法。因此,我试图弄清楚如何在表单实际上已提交的情况下捕获表单通常发送给服务器的同一类型的集合中的所有值。我怀疑有一种简单的方法可以捕获此

  • 问题内容: 我在apache tomcat5.5上使用Spring 2.0.6和Hibernate 3.2.x,现在我们计划将我们的hybernate映射文件更改为hybernate + jpa支持映射文件。为此,我们创建了这样的文件 daoConfig.xml 在我的daoconfig.xml中,我给出了persistence.xml的路径,这是我的persistence.xml文件 在这里,我

  • 我正在与JTA、两阶段提交、JMS和JDBC事务作斗争。这个想法(简而言之)是 在队列中接收消息 所以我得到了,创建,从会话创建接收器并设置消息侦听器。 在侦听器内部,在方法中,我开始我的用户事务,执行jdbc内容并提交事务或在出现问题时进行回滚。现在我期望(又名“希望”)当用户事务提交时,消息会得到确认。 但这并没有发生,消息仍然在队列中,并且一次又一次地被重新传递。 我错过了什么?我仔细检查了

  • 请不要只提交需求而不创建问题。 What is the purpose of the change XXXXX Brief changelog XX Verifying this change XXXX Follow this checklist to help us incorporate your contribution quickly and easily: [ ] Make sure t