Weblogic常见故障之二:XAER_NOTA XAException问题的解决

在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是重新配置如下,问题解决:

时间: 2024-08-16 03:27:47

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

Weblogic常见故障一:JDBC Connection Pools

最近系统老是出现数据库连接池不够用的问题,由于weblogic数据源里没有配置JDBC连接数,取的是默认值15,太小导致connection耗尽,是不是就报一堆错.后来通过修改WebLogic数据源配置文件,问题得到解决.以下为解决步骤: 步骤1:查看weblogic\Middleware\user_projects\domains\base_domain\config\config.xml文件中jdbc的descriptor-file-name <jdbc-system-resource>

AD常见故障排查---运维笔记

在维护AD的时候会经常出现一些故障,良好的问题解决方法,可以在尽可能短时间内解决问题. 一·常见故障类型 (1)域连接失败:加入域时,提示找不到域. (2)域无法登陆:登录时密码不正确或登录后访问不了共享资源. (3)域登录缓慢:登录时非常缓慢 . (4)组策略部署失败:组策略未生效,或只对部分部分用户账户生效. (5)域控制器之间复制失效:AD数据或DNS记录不能同步更新. 二·AD常见故障排查思路 (1)确认单一用户账户的的故障:在于控制器中查找用户账户的所有信息点去判断故障点及其原因. (

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

作为linux运维,多多少少会碰见这样那样的问题或故障,从中总结经验,查找问题,汇总并分析故障的原因,这是一个Linux运维工程师良好的习惯.每一次技术的突破,都经历着苦闷,伴随着快乐,可我们还是执着的继续努力,从中也积累了更多的经验,这就是实践给予我们的丰厚回报. 下面汇总了我做项目过程可能出现的故障及解决方法,看看是否与你有共鸣,并对你有帮助? 第一:常见问题解决集锦   1.shell脚本不执行    问题:某天研发某同事找我说帮他看看他写的shell脚本,死活不执行,报错.我看了下,脚本

高低温试验箱基础常见故障清除方式

一.高低温试验箱在高溫实验中,如溫度转变达不上实验溫度值时,能够查验家用电器系统软件,逐个故障检测.如溫度升上去比较慢,还要查询风呼吸系统,看下风循环系统的调整隔板是不是打开一切正常,相反,就查验风循环系统的电动机运行是不是一切正常.如溫度过冲利害那麼就必须灭磁PID的设定主要参数.假如溫度立即升高,过温保护,那麼,控制板出常见故障,须拆换操纵仪表盘. 二..高低温试验箱在实验运作全过程中忽然出现异常时,操纵仪表盘上出現相匹配的常见故障显示信息提醒并有声讯警报提醒.实际操作工作人员能够对比机器设

【集群实战】NFS服务常见故障排查和解决方法

NFS,全名叫Network File System,中文叫网络文件系统,是Linux.UNIX系统的分布式文件系统的一个组成部分,可实现在不同网络上共享远程文件系统. NFS由Sun公司开发,目前已经成为文件服务的一种标准之一(RFC1904,RFC1813). 其最大的功能就是可以通过网络,让不同操作系统的计算机可以共享数据,所以可以把NFS看做是一个文件服务器.NFS缺点是其读写性能比本地硬盘要差一些. 一.NFS服务常见故障排查: NFS服务出现了故障,主要从以下几个方面检查原因: (1

老男孩教育每日一题-2017年4月28日- MySQL主从复制常见故障及解决方法?

MySQL主从复制常见故障及解决方法? 1.1.1故障1:从库数据与主库冲突 show slave status; 报错:且show slave status\G Slave_I/O_Running:Yes Slave_SQL_Running:No Seconds_Behind_Master:NULL Last_error:Error 'Can't create database 'xiaoliu'; database exists' on query. Default   database:'

灵岳点钞机常见故障及解决方法

1.      开机后机器没有任何反应:检查是否停电,电源开关是否开启,插头是否插好,保险丝是否烧断. 2.    控制键盘灯不亮:内插线是否脱落 3.    进钞台不进钞:进钞传感器损坏 4.    大电机不转:保险丝烧坏. 5.    小电机不转:小电机损坏 6.    接钞叶不转:皮带断 7.      接钞轮不转:电机皮带断 8.      不计数:计数传感器坏 9.      不清零:清零传感器坏 10.   外显数字缺边:数码管坏 11.   出现重张:间隙是否过大,调节进钞台后面的

托管香港服务器常见故障原因分析

1.应用服务无法正常运行 当客户把香港服务器托管后,会在服务器上运行多种应用服务,比如WWW服务.Mail服务.Ftp服务等等.提供的服务类型越多,那么出问题的可能性就越大.当出现某种服务无法启动或死机时,比如sql查询过于频繁容易导致数据库挂掉.可以通过远程重启这项服务,经过重启机器或是相关处理后即可很快恢复正常. 2.服务器硬件故障 服务器硬件可能出现问题的地方,主要有主板.内存.硬盘等方面.比如大量的读写,容易造型硬盘坏道.在排除其它可能的原因后,经技术人员检查出是服务器硬件问题,则需客户

Weblogic配置故障转移

前提:实现负载均衡,即当访问项目时,会通过代理服务器将请求分发到不同的服务器上. weblogic的故障转移配置 在项目的WEB-INF目录下创建weblogic.xml <!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd&qu