最近在项目中遇到一个有关XA事务问题。对于何为XA事务我也说不太清楚,我现在的理解是一个需要横跨多个数据库甚至多类型数据库的操作。这个问题费尽周折终告解决,对于该问题的全程解决网上并没有整理完全的东西,高兴之余整理出来与大家共享。
问题描述:某操作需要更新多个表,而这些表又分别分散在SQL SERVER和DB2的多个库当中(相关技术实现java、websphere)。使用SLSB(无状态Session Bean)做该项操作事务处理。结果执行过程中,所有SQL均可成功执行,但操作无法通过。报错信息为在执行SQL SERVER的SQL时(在全局事务中发生非法尝试使用多个仅有一阶段能力的资源,方法 enlist 捕捉到 com.ibm.ws.Transaction.IllegalResourceIn2PCTransactionException,当尝试使用事务管 理器为当前事务从数据源 XXX 将资源加入列表时(具体错误略)),然后在整个事务提交时报错(处理方法 allocateMCWrapper 时应该存在活动的事务,处理方法 initializeForUOW 时应该存在活动的事务。 com.ibm.ws.Transaction.IllegalResourceIn2PCTransactionException,org.omg.CORBA.TRANSACTION_ROLLEDBACK: javax.transaction.TransactionRolledbackException)。表现结果为SQL SERVER的对应SQL成功执行并提交,DB2的SQL成功执行但未提交。
处理过程详细说明:
在WEBSPHERE管理台将DB2数据源建为XA类型数据源,并成功测试连接。但在将SQLSERVER数据源建为XA数据源时报错(未能找到 存储过程 'master..xp_jdbc_open2'),无奈SQLSERVER仍用普通数据源。运行结果所有SQL均成功执行但全部无法提交,报错内容(发 生试探非法用现有两阶可用资源提交一阶可用资源,org.omg.CORBA.TRANSACTION_ROLLEDBACK: javax.transaction.TransactionRolledbackException)。
解决如何添加SQLSERVER(XA)类型数据源。从网上下载SQLSERVER支持XA驱动,可从 ftp://ftp.software.ibm.com/software/websphere/info/tools/DataDirect/datadirect.htm 查看说明并下载,根据说明与本机器配置将适合的sqljdbc.dll文件放入SQL SERVER安装目录的BINN目录下,并对master库执行包中SQL脚本instjdbc.sql。成功执行后启动本机“Distributed Transaction Coordinator”服务,如无法成功启动,在运行中执行命令“msdtc -resetlog”再尝试启动。然后尝试添加SQLSERVER(XA)类型数据源,结果无法连接,报错(xa_open (0) returns -3DSRA0010E: SQL 状态 = HY000,错误代码 = 20,001)。此时应检查注册表中分支HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security中 XATransactions的键值,应改为1(非0值)用以设置XA事务可用。设置完成后重启DTC服务、SQL SERVER以及WEBSPHERE使设置完全生效。然后测试可正常连接。
做过上述设置后,程序在WEBSPHERE中可完全支持横跨DB2、SQL SERVER多个数据库之间的全局事务
- 浏览: 422667 次
- 性别:
- 来自: 北京
最新评论
-
masuweng:
好好好,有时间了练习下
使用Java混淆工具yguard -
shengshihouzhe:
第一个eg实现的应该是循环栅栏,不是计数器
Java Phaser使用 -
yukaizhao:
推荐一个很全的guava教程 http://outofmemo ...
google guava cache 处理 -
yanqingluo:
谢谢分享,已关注.
BTrace入门及使用实例 -
luoxiaohui_java:
谢谢分享!
这么好的文章,怎么没人回复呢。
ibm was nd websphere 集群
相关推荐
在配置 WebLogic 服务器时,需要将 Microsoft SQL Server 2000 Driver for JDBC 的三个驱动(msbase.jar、msutil.jar 和 mssqlserver.jar)放到 C:\bea\wlserver6.1\lib 目录下。在 C:\bea\wlserver6.1\config\...
- **连接配置**: - Initial Capacity: 10 - Maximum Capacity: 15 - **目标设置**: - Target: myserver() 5. **创建DataSource**: - 通过Weblogic Server控制台进行配置。 - **基本信息**: - Name: ...
- **JDBC连接SQL Server的常见问题**:可能遇到的挑战包括驱动兼容性、网络连接、认证方式等问题,需要确保WebLogic与SQL Server版本兼容,并正确配置数据库连接信息。 - **XA-Driver与普通Driver的区别**:XA-...
如果是 SQL Server,则需要选择 SQL Server 的 JDBC 驱动。 **STEP2:** 连接池连接属性配置。这一阶段主要涉及以下几点: - **连接 URL**:指定数据库的位置,通常包括主机名、端口、数据库实例名等信息。 - **...
根据提供的文件信息,本文将详细解析与WebLogic 6中JDBC数据源配置与测试相关的技术要点,包括连接池管理、资源释放策略、分布式事务的支持以及不同类型的JDBC驱动等。 ### WebLogic 6中的JDBC连接池管理 在...
作为一款强大的中间件产品,WebLogic Server 能够解决关键 Web 应用系统所面临的性能、安全性、可扩展性和高可用性等问题,同时还具备易安装、部署和管理的特点。 #### 1.1 什么是 WebLogic 系统 WebLogic 系统是...
在J2EE开发领域,面试通常会涵盖许多关键知识点,以评估候选人的技术能力、问题解决技巧以及对框架和标准的理解。以下是一些基于标题和描述中提及的J2EE开发面试题可能涉及的重要知识点: 1. **Java基础知识**:...
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。 19、...