在weblogic执行XA操作的时候,我们会碰到如下的错误,后来发现是JDBC配置的问题。
主要报错:
java.sql.SQLException: XA error: XAER_NOTA : The XID is not valid start() failed on resource

'weblogic.jdbc.jta.DataSource': XAER
_NOTA : The XID is not valid

查了一下,XAER_NOTA说明transaction branch在ResourceManager端(DB, MQ等)不存在。不存在通常由两种可能:
1.transaction branch被timeout掉了,
2.就是这个branch压根就没有在ResourceManager端发起过。

对于1,可以在Weblogic的XAConnectionPool设定中Enable XA Transaction Timeout, 并对此设定一个合理的值,建议这个值比global transaction timeout大。这样weblogic在调用xaStart()的时候,会通知RM,该branch的timeout时间,而不是使用RM自己默认的timeout(对于Oracle, 默认为60秒,但一般会在120秒的时候,tx branch才会被Oracle timeout掉)。

对于2, 一般会跟配置有关系,比如两个XA datasource指向同一个XAConnectionPool, 或多个XAConnectionPool指向同一

个Database,

本例中原来的配置是只一个JDBC POOL:

单子报错如下错。

本案例中详细的报错:
2009-12-30 13:50:27,219 DEBUG [IAAcctConnector] errorFlag : false
2009-12-30 13:50:27,234 ERROR [logger] Error Process = AcctCrmIbsDown
Error Node  = NO_ENTRY
InstanceId = NO_ENTRY
BUsinessId = 376042
City = taizhou
Module Type = CrmIbs_Acct_EAI
Error Code = 6291476
Error Type = 16273440
Error Msg = SqlMapIAManageAcctOssCIDAO postAcct JDBC Exception; nested exception is

org.springframework.jdbc.CannotGetJdbcConnection
Exception: Could not get JDBC connection; nested exception is java.sql.SQLException: Unexpected exception

while enlisting XAConnecti
on java.sql.SQLException: XA error: XAER_NOTA : The XID is not valid start() failed on resource

'weblogic.jdbc.jta.DataSource': XAER
_NOTA : The XID is not valid
oracle.jdbc.xa.OracleXAException
        at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:938)
        at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:244)
        at weblogic.jdbc.wrapper.VendorXAResource.start(VendorXAResource.java:50)
        at weblogic.jdbc.jta.DataSource.start(DataSource.java:629)
        at weblogic.transaction.internal.XAServerResourceInfo.start(XAServerResourceInfo.java:1140)
        at weblogic.transaction.internal.XAServerResourceInfo.xaStart(XAServerResourceInfo.java:1072)
        at weblogic.transaction.internal.XAServerResourceInfo.enlist(XAServerResourceInfo.java:240)
        at weblogic.transaction.internal.ServerTransactionImpl.enlistResource

(ServerTransactionImpl.java:463)
        at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1392)
        at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1334)
        at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:396)
        at weblogic.jdbc.jta.DataSource.connect(DataSource.java:354)
        at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:305)
        at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:146)
        at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:100)
        at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:76)
        at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:178)
        at org.springframework.orm.ibatis.SqlMapClientTemplate.insert(SqlMapClientTemplate.java:309)
        at com.ctzj.eai.cn.oss.CrmIbs.account.dao.ibatis.SqlMapIAManageAcctOssCIDAO.postAcct

(SqlMapIAManageAcctOssCIDAO.java:116)
        at com.ctzj.eai.cn.oss.CrmIbs.account.task.IAAcctDBInsertAcctTask.execute

(IAAcctDBInsertAcctTask.java:71)
        at com.ctzj.eai.cn.oss.CrmIbs.account.connector.IAAcctConnectorOut.handoverTask

(IAAcctConnectorOut.java:139)
        at com.ctzj.eai.cn.oss.CrmIbs.account.connector.IAAcctConnectorOut.process

(IAAcctConnectorOut.java:191)
        at com.ctzj.eai.cn.oss.CrmIbs.account.connector.IAAcctConnector.doAcctOutProcess

(IAAcctConnector.java:187)
        at com.ctzj.eai.cn.oss.CrmIbs.account.connector.IAAcctConnector_xjttxc_ELOImpl.doAcctOutProcess

(IAAcctConnector_xjttxc_ELOIm
pl.java:207)
        at com.ctzj.eai.cn.oss.IAC3OssAdapter.onMessage(IAC3OssAdapter.java:86)
        at weblogic.ejb20.internal.MDListener.execute(MDListener.java:370)
        at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:262)
        at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2678)
        at weblogic.jms.client.JMSSession.execute(JMSSession.java:2598)
        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)

at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1397)
        at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1334)
        at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:396)
        at weblogic.jdbc.jta.DataSource.connect(DataSource.java:354)
        at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:305)
        at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:146)
        at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:100)
        at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:76)
        at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:178)
        at org.springframework.orm.ibatis.SqlMapClientTemplate.insert(SqlMapClientTemplate.java:309)
        at com.ctzj.eai.cn.oss.CrmIbs.account.dao.ibatis.SqlMapIAManageAcctOssCIDAO.postAcct

(SqlMapIAManageAcctOssCIDAO.java:116)
        at com.ctzj.eai.cn.oss.CrmIbs.account.task.IAAcctDBInsertAcctTask.execute

(IAAcctDBInsertAcctTask.java:71)
        at com.ctzj.eai.cn.oss.CrmIbs.account.connector.IAAcctConnectorOut.handoverTask

(IAAcctConnectorOut.java:139)
        at com.ctzj.eai.cn.oss.CrmIbs.account.connector.IAAcctConnectorOut.process

(IAAcctConnectorOut.java:191)
        at com.ctzj.eai.cn.oss.CrmIbs.account.connector.IAAcctConnector.doAcctOutProcess

(IAAcctConnector.java:187)
        at com.ctzj.eai.cn.oss.CrmIbs.account.connector.IAAcctConnector_xjttxc_ELOImpl.doAcctOutProcess

(IAAcctConnector_xjttxc_ELOIm
pl.java:207)
        at com.ctzj.eai.cn.oss.IAC3OssAdapter.onMessage(IAC3OssAdapter.java:86)
        at weblogic.ejb20.internal.MDListener.execute(MDListener.java:370)
        at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:262)
        at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2678)
        at weblogic.jms.client.JMSSession.execute(JMSSession.java:2598)
        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)

SubSystem = 4
Cause = class org.springframework.jdbc.CannotGetJdbcConnectionException
StackTrace = at com.ctzj.eai.cn.oss.CrmIbs.account.dao.ibatis.SqlMapIAManageAcctOssCIDAO.postAcct

(SqlMapIAManageAcctOssCIDAO.java:12
0)
at com.ctzj.eai.cn.oss.CrmIbs.account.task.IAAcctDBInsertAcctTask.execute(IAAcctDBInsertAcctTask.java:71)
at com.ctzj.eai.cn.oss.CrmIbs.account.connector.IAAcctConnectorOut.handoverTask

(IAAcctConnectorOut.java:139)
at com.ctzj.eai.cn.oss.CrmIbs.account.connector.IAAcctConnectorOut.process(IAAcctConnectorOut.java:191)
at com.ctzj.eai.cn.oss.CrmIbs.account.connector.IAAcctConnector.doAcctOutProcess(IAAcctConnector.java:187)
at com.ctzj.eai.cn.oss.CrmIbs.account.connector.IAAcctConnector_xjttxc_ELOImpl.doAcctOutProcess

(IAAcctConnector_xjttxc_ELOImpl.java:
207)
at com.ctzj.eai.cn.oss.IAC3OssAdapter.onMessage(IAC3OssAdapter.java:86)
at weblogic.ejb20.internal.MDListener.execute(MDListener.java:370)
at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:262)
at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2678)
at weblogic.jms.client.JMSSession.execute(JMSSession.java:2598)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)

解决方法,将97_Pool clone一个为Sync97_Pool是重新配置如下,问题解决:

Weblogic常见故障之二:XAER_NOTA XAException问题的解决的更多相关文章

  1. Weblogic常见故障常:JDBC Connection Pools(转)

    WebLogic Server中数据库连接池是一个经常出问题的地方,总结一下出问题的原因和解决办法. 一.数据库连接泄漏 此类问题一般都是由于开发人员没有正确关闭数据库连接造成的.比如使用完Conne ...

  2. Weblogic常见故障常:JDBC Connection Pools【转】

    WebLogic Server中数据库连接池是一个经常出问题的地方,总结一下出问题的原因和解决办法. 一.数据库连接泄漏 此类问题一般都是由于开发人员没有正确关闭数据库连接造成的.比如使用完Conne ...

  3. Weblogic常见故障一:JDBC Connection Pools

    最近系统老是出现数据库连接池不够用的问题,由于weblogic数据源里没有配置JDBC连接数,取的是默认值15,太小导致connection耗尽,是不是就报一堆错.后来通过修改WebLogic数据源配 ...

  4. Weblogic常见故障常:JDBC Connection Pools

    http://blog.csdn.net/woshixuye/article/details/24122579 有些时候是数据库连接池出现了问题,测试的时候显示没有连接池了,重启WebLogic都不行 ...

  5. 理解 OpenStack + Ceph (7): Ceph 的基本操作和常见故障排除方法

    本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 ...

  6. [转] Linux运维常见故障排查和处理的技巧汇总

    作为linux运维,多多少少会碰见这样那样的问题或故障,从中总结经验,查找问题,汇总并分析故障的原因,这是一个Linux运维工程师良好的习惯.每一次技术的突破,都经历着苦闷,伴随着快乐,可我们还是执着 ...

  7. mysql主从复制常见故障解决

    一.主从复制常见故障 1.从库已存在数据库,主库建立同名库导致从库同步失败.报错如下: mysql> show slave status\G*************************** ...

  8. Linux运维常见故障排查和处理的33个技巧汇总

    作为linux运维,多多少少会碰见这样那样的问题或故障,从中总结经验,查找问题,汇总并分析故障的原因,这是一个Linux运维工程师良好的习惯.每一次技术的突破,都经历着苦闷,伴随着快乐,可我们还是执着 ...

  9. RAD介绍及实战,LVM介绍及实战,磁盘常见故障

    目录 一.RAID 1.RAID好处: 2.RAID的运行方式: 3.RAID的级别: 二.RAID实战 软RAID 1.RAID0 2.RAID1 3.RAID5 4.RAID10 三.LVM介绍 ...

随机推荐

  1. 【转载】viewLoad、viewDidLoad的一些事

    viewLoad和viewDidLoad都可以用来在视图载入的时候,初始化一些内容 viewDidLoad此方法只有当view从nib文件初始化的时候才被调用.viewDidLoad用于初始化,加载时 ...

  2. Django 定制验证码

    一.图片验证码 方式一: def get_validCode_img(request): path=os.path.join(settings.BASE_DIR,'static','image','1 ...

  3. 基于flask和百度AI接口实现前后端的语音交互

    话不多说,直接怼代码,有不懂的,可以留言 简单的实现,前后端的语音交互. import os from uuid import uuid4 from aip import AipSpeech from ...

  4. 使用python读取文本中结构化数据

    需求 read some .txt file in dir and find min and max num in file. solution: echo *.txt > file.name ...

  5. [转载] Python itertools模块详解

    原文在这里,写的很详细,感谢原作者,以下摘录要点. itertools用于高效循环的迭代函数集合. 无限迭代器 迭代器 参数 结果 例子 count() start, [step] start, st ...

  6. 微信小程序-表格形式如何布局?

    微信小程序没有现成的table标签,该怎么布局呢? <view class="my-grids"> <block wx:for="{{grids}}&q ...

  7. docker容器中文件的上传与下载

    原文地址:传送门 1.上传文件 docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH [OPTIONS]:保持源目标中的链接,例: docker cp ...

  8. 这种文件别打开, 大小不足1KB, 却可以让你电脑瘫痪

    今年6月份,抖音表白代码火了,不足1kb的txt文件,玩出了新花样.可是你知道吗,这种非常“浪漫”的表白方式,其实存在着很大的风险,甚至会让你的电脑直接瘫痪. 首先,先说一下所谓的表白代码是怎么回事. ...

  9. Maven的私有仓库Nexus

    1.什么是Nexus 在前面进行maven项目的构建中,可以看到在构建的过程中需要安装maven的依赖插件,如图: 在日常的开发构建中,我们也可以自己搭建一个私有的nexus.那么什么是nexus呢? ...

  10. Mac OS X系统下的Android环境变量配置

    在Mac下开发Android,要想在终端利用命令行使用adb/android等命令时,需要配置一下环境变量. 步骤: 1.首先,假设你已经下载了Android SDK,解压后安装了adb.记住sdk文 ...