【发布时间】:2013-01-23 09:35:10
【问题描述】:
我正在运行一个 JPA/Spring 应用程序,该应用程序连接到 Microsoft SQL Server 上多个启用 XA 的数据源。一切正常,全局事务正确启动并根据需要回滚...
但是,JBoss 时不时会变得疯狂,每隔几秒钟就会开始发送以下警告:
10:25:22,524 WARN [com.arjuna.ats.jta] (Periodic Recovery) ARJUNA016027: Local XARecoveryModule.xaRecovery got XA exception XAException.XAER_RMERR: javax.transaction.xa.XAException: The function RECOVER: failed. The status is: -3. Error: "*** SQLJDBC_XA DTC_ERROR Context: xa_recover, state=1, StatusCode:-3 (0xFFFFFFFD) ***"
at com.microsoft.sqlserver.jdbc.SQLServerXAResource.DTC_XA_Interface(SQLServerXAResource.java:550)
at com.microsoft.sqlserver.jdbc.SQLServerXAResource.recover(SQLServerXAResource.java:728)
at org.jboss.jca.adapters.jdbc.xa.XAManagedConnection.recover(XAManagedConnection.java:358)
at org.jboss.jca.core.tx.jbossts.XAResourceWrapperImpl.recover(XAResourceWrapperImpl.java:162)
at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.xaRecovery(XARecoveryModule.java:503) [jbossjts-4.16.2.Final.jar:]
at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.resourceInitiatedRecoveryForRecoveryHelpers(XARecoveryModule.java:471) [jbossjts-4.16.2.Final.jar:]
at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.bottomUpRecovery(XARecoveryModule.java:385) [jbossjts-4.16.2.Final.jar:]
at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.periodicWorkSecondPass(XARecoveryModule.java:166) [jbossjts-4.16.2.Final.jar:]
at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.doWorkInternal(PeriodicRecovery.java:789) [jbossjts-4.16.2.Final.jar:]
at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.run(PeriodicRecovery.java:371) [jbossjts-4.16.2.Final.jar:]
到目前为止,我还无法理解我应该在这里做什么,我有点担心将处于这种状态的应用程序投入生产。
谁能解释为什么会发生这种情况,如何解决和避免它?
编辑:
在 Windows 日志中,我找不到任何看起来像 DTC 错误的内容:
MSDTC 使用以下设置启动:
安全配置(OFF = 0 和 ON = 1):允许远程 管理员 = 0,网络客户端 = 0,事务管理器 通信:允许入站事务 = 0,允许出站 事务 = 0,事务 Internet 协议 (TIP) = 0,启用 XA 事务 = 1,启用 SNA LU 6.2 事务 = 1,MSDTC 通信安全 = 需要相互验证,帐户 = NT AUTHORITY\NetworkService,检测到防火墙排除 = 0
已安装事务桥 = 0 过滤重复事件 = 1
正在尝试初始化 Microsoft 分布式事务处理协调器 (MS DTC)。这只是一条信息性消息。无需用户操作。
已完成任何涉及 Microsoft 分布式事务协调器 (MS DTC) 的不确定分布式事务的恢复。这只是一条信息性消息。无需用户操作。
在 1 秒内完成数据库 MyDatabase(数据库 ID 20)的恢复(分析 589 毫秒,重做 0 毫秒,撤消 398 毫秒。)这只是一条信息性消息。无需用户操作。
【问题讨论】:
-
我面临同样的问题。你找到解决这个问题的方法了吗?
-
@BhushanPatil,我猜微软最近修复了这个问题。我认为您可以查看 mssql-jdbc github 项目的 dev 分支。参考:github.com/Microsoft/mssql-jdbc/pull/257
标签: java sql-server jpa jboss7.x xa