请教这个社区的专家:关于webshere5 下管理JTA事务的问题

nonametxt 2005-02-04 09:47:20
环境:
1、数据库2个:
oracle8.17、oracle8.15

2、运用服务器:websphere5

3、开发环境:wsad5.11

4、数据库驱动:class12.jar(JDBC driver 版本:9.2.0.5.0)

开发中出现的问题:
1、在服务器资源中建立JDBC thin XA连接 test_jta;
2、在test_jta 下建立XA的数据源jdbc/scpsuser,jdbc/finish 分别连接oracle817和oracle815两个数据库;
3、建立下面这个测试JSP(主要代码)

Context initctx = new InitialContext();
javax.transaction.UserTransaction uxa = null;
Connection conn1 = null;
Connection conn2 = null;

try{
Object ux = initctx.lookup("java:comp/UserTransaction");
uxa = (javax.transaction.UserTransaction)ux;
}catch(Exception _e){
out.println(_e.toString());
}


try{
uxa.begin();
DataSource ds1 = (DataSource) initctx.lookup("jdbc/scpsuser");
DataSource ds2 = (DataSource) initctx.lookup("jdbc/finish");
conn1 = ds1.getConnection();
conn2 = ds2.getConnection();


Statement stmt1 = conn1.createStatement();

int i = stmt1.executeUpdate("insert into roles(roles_id,roles_name,roles_describe) values('...','***','***')");
out.println(i + "<br>");
stmt1.close();

out.println("=========================================<br>");

Statement stmt2 = conn2.createStatement();
int j = stmt2.executeUpdate("insert into CIQ_BRANCH(bureau_no,bureau_name) values('..','***')");
out.println(j + "<br>");
stmt2.close();

uxa.commit();
out.println("提交事物");

}catch(Exception _e){
uxa.rollback();
out.println("会滚事务!"+_e.toString());
}finally{
conn1.close();
conn2.close();
out.println("关闭数据库资源");
}

问题:
会滚事务!java.sql.SQLException: DSRA9002E: ResourceException 带有错误代码 null:javax.resource.ResourceException: enlist: caught Exception at com.ibm.ejs.j2c.XATransactionWrapper.enlist(XATransactionWrapper.java:703) at com.ibm.ejs.j2c.ConnectionEventListener.interactionPending(ConnectionEventListener.java:745) at com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.processInteractionPendingEvent(WSRdbManagedConnectionImpl.java:1446) at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.beginTransactionIfNecessary(WSJdbcConnection.java:329) at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.createStatement(WSJdbcConnection.java:719) at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.createStatement(WSJdbcConnection.java:698) at org.apache.jsp._test1._jspService(_test1.java:112) at com.ibm.ws.webcontainer.jsp.runtime.HttpJspBase.service(HttpJspBase.java:89) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at
...(省略)
...全文
233 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nonametxt 2005-02-17
  • 打赏
  • 举报
回复
谢谢几位回复!
iceleighton 2005-02-16
  • 打赏
  • 举报
回复
WAS 5最低支持Oracle 8.1.7
nonametxt 2005-02-11
  • 打赏
  • 举报
回复
was5不支持oracle 815的XA事务??
太郁闷了阿?
能不能有什么其他方案替代一下?

比如说:
oracle817(XA) + Jms(XA)
jms(XA) 封装一个oracle815数据库连接,来进行XA的2PC事务??

有没有做过这样的咚咚???
nonametxt 2005-02-04
  • 打赏
  • 举报
回复
wsad511打印的堆栈信息太多,一下贴不下,我挑主要的:
05-2-4 9:53:11:459 CST] 1603ad00 WSRdbDataSour I DSRA8205I: JDBC driver 名:Oracle JDBC driver

[05-2-4 9:53:11:459 CST] 1603ad00 WSRdbDataSour I DSRA8206I: JDBC driver 版本:9.2.0.5.0

[05-2-4 9:53:12:119 CST] 1603ad00 XATransaction E J2CA0027E: 当调用 start(在数据库 jdbc/finish 的 XA 资源适配器上,事务标识 {XID: formatId(57415344), gtrid_length(39), bqual_length(28), data(0000000000000001000000174d37e8813924025f7d5f5e95e5814e863bc7463e736572766572314d37e8813924025f7d5f5e95e5814e863bc7463e00000017072dcf5a)} 中)时,发生异常:java.lang.NullPointerException
at com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl.start(WSRdbXaResourceImpl.java:927)
at com.ibm.ejs.j2c.XATransactionWrapper.start(XATransactionWrapper.java:1267)
at com.ibm.ws.Transaction.JTA.JTAResourceBase.start(JTAResourceBase.java:164)
(省略....)

[05-2-4 9:53:12:370 CST] 1603ad00 RegisteredRes E WTRN0078E: 事务管理器试图在事务资源上调用启动导致错误。错误代码为 XA_OK。异常堆栈跟踪遵循:javax.transaction.xa.XAException: Exception:java.lang.NullPointerException
at com.ibm.ejs.j2c.XATransactionWrapper.start(XATransactionWrapper.java:1303)
at com.ibm.ws.Transaction.JTA.JTAResourceBase.start(JTAResourceBase.java:164)
at com.ibm.ws.Transaction.JTA.RegisteredResources.startRes(RegisteredResources.java:389)
at com.ibm.ws.Transaction.JTA.TransactionImpl.enlistResource(TransactionImpl.java:1903)
at com.ibm.ws.Transaction.JTA.TranManagerSet.enlist(TranManagerSet.java:494)
at com.ibm.ejs.j2c.XATransactionWrapper.enlist(XATransactionWrapper.java:602)
at com.ibm.ejs.j2c.ConnectionEventListener.interactionPending(ConnectionEventListener.java:745)
at com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.processInteractionPendingEvent(WSRdbManagedConnectionImpl.java:1446)
at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.beginTransactionIfNecessary(WSJdbcConnection.java:329)
(省略....)

[05-2-4 9:53:12:820 CST] 1603ad00 XATransaction E J2CA0030E: 方法 enlist 捕捉到 javax.transaction.SystemException: Failed to start the transaction association.
at com.ibm.ws.Transaction.JTA.TransactionImpl.enlistResource(TransactionImpl.java:1917)
at com.ibm.ws.Transaction.JTA.TranManagerSet.enlist(TranManagerSet.java:494)
at com.ibm.ejs.j2c.XATransactionWrapper.enlist(XATransactionWrapper.java:602)
at com.ibm.ejs.j2c.ConnectionEventListener.interactionPending(ConnectionEventListener.java:745)
at com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.processInteractionPendingEvent(WSRdbManagedConnectionImpl.java:1446)
at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.beginTransactionIfNecessary(WSJdbcConnection.java:329)
at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.createStatement(WSJdbcConnection.java:719)
at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.createStatement(WSJdbcConnection.java:698)
at org.apache.jsp._test1._jspService(_test1.java:112)

(省略....)



(当尝试使用事务管理器为当前事务从数据源 jdbc/finish 将资源加入列表时),并抛出 ResourceException。
cdsfly 2005-02-04
  • 打赏
  • 举报
回复
报错的数据源是连接oracle 815的数据源。你的错误我没有仔细看。但是was5是不支持oracle 815的。所以你应该升级数据库版本。!

2,633

社区成员

发帖
与我相关
我的任务
社区描述
WebSphere 是 IBM 的软件平台。它包含了编写、运行和监视全天候的工业强度的随需应变 Web 应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施,如服务器、服务和工具。
社区管理员
  • WebSphere社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧