当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:14:00  来源:本站整理

Weblogic中因为IP变更招致SubCoordinator not available,Transa[Java编程]

赞助商链接



  本文“Weblogic中因为IP变更招致SubCoordinator not available,Transa[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

Weblogic中因为IP变更招致SubCoordinator not available,Transaction RollbackException问题调查

这几天在做一些Transaction方面的研究,碰到一个诡异的问题.问题大约是这样的,之前我的测试一向在公司做,本日把工作带到家里了,后果因为以下问题,招致我没法工作了.

weblogic.transaction.RollbackException: SubCoordinator 'server_2+10.182.216.189:7021+driver_test_domain+t3+' not available
at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:215)
at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:224)
at weblogic.transaction.internal.CoordinatorImpl_923_WLStub.commit(Unknown Source)
at weblogic.transaction.internal.TransactionImpl.commit(TransactionImpl.java:324)
at weblogic.transaction.internal.TransactionManagerImpl.commit(TransactionManagerImpl.java:283)
at weblogic.transaction.internal.TransactionManagerImpl.commit(TransactionManagerImpl.java:277)
at test.jdbc.DriverTest.xaTest(DriverTest.java:293)
at test.jdbc.DriverTest.main(DriverTest.java:49)
Caused by: weblogic.transaction.RollbackException: SubCoordinator 'server_2+10.182.216.189:7021+driver_test_domain+t3+' not available
at weblogic.transaction.internal.TransactionImpl.throwRollbackException(TransactionImpl.java:1809)
at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:331)
at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:227)
at weblogic.transaction.internal.CoordinatorImpl.commit(CoordinatorImpl.java:101)
at weblogic.transaction.internal.CoordinatorImpl_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:553)
at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:443)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:439)
at weblogic.rmi.internal.BasicServerRef.access$300(BasicServerRef.java:61)
at weblogic.rmi.internal.BasicServerRef$BasicExecuteRequest.run(BasicServerRef.java:983)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)

初看到这个非常,家里做测试,Tx的subcoordinator怎么会用到公司的IP(10.182.216.189)呐?怎么着也应当是 192.168.0.51吧?第一感受是我的datasource配置有问题,细心查抄了一下,没什么问题.再查抄查抄server2的listen address,也没有问题.见鬼了,怎么会这样?还有什么地方能跟IP有关系呢?tlog?  没错,的确仿佛跟tlog有关系,当时想直接把tlog删掉,重起一下算了.毕竟自己近来在做JTA的调查,干脆自己完好debug一下算了.

重新启动客户端测试程序,debug一下客户端transaction信息.趁便提一下,weblogic中transaction在 client、server之间是通过PropagationContext往复传送的,一次RMI调用,会招致一次传送往复. PropagationConext中普通包含以下信息:

Xid: 事件ID

CoordinatorURL: 事件主coordinator的URL(终究事件提交在对应的server上完成)

scURLs: subcoordinator url列表,每个involve到该tx中的server url都在此中.coordinator通过这个url告诉每个subcoordinator完成事件的提交、回滚.

resNames: involve到该tx中所以resource的名字列表

......

从非常上来看,这个问题跟subCoordinator有关,所以在客户端,我只debug了scURLs,以下,

从debug信息来看,server2的scURL应当是没有问题的.回头再看看这个非常,因为非常是在客户端发动提交恳求的时刻,server端抛出的,问题是,我传送过去的是个精确的scURL(192.168.0.51),server端怎么会解析出一个错误的 url(10.182.216.189)呢?

持续debug server端,server端收到coordinatorImpl_stub的commit()时,它需求先从PropagationContext中 restore transaction信息,包含按照scURLs复原scInfoList, 按照resNames复原resourceInfoList.问题出在了复原scInfoList的时刻.以下:

1       if (scURLs != null) {
2             for (int i = 0; i < scURLs.length; i++) {
3                 String scURL = scURLs[i];
4                 if (tm.isLocalCoordinator(scURL)) continue;
5                 SCInfo sci = tx.getOrCreateSCInfo(scURL);
6                 sci.setState(scStates[i]);
7                 if (scSyncRegs[i] == 1) sci.setSyncRegistered(true);
8             }
9       }


  以上是“Weblogic中因为IP变更招致SubCoordinator not available,Transa[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 配置BEA WebLogic 8.1 JDBC衔接
  • WebLogic利用DB的Java控件访谒数据库
  • 把WebLogic EJB程序迁移到JBoss上
  • 在Weblogic上配置Hibernate为JNDI
  • JBuilder+WebLogic实现教材管理系统
  • Jbuilder6.0+Weblogic6.0完成EJB开公安置
  • 以weblogic为服务器开辟会话EJB
  • WebLogic8.1的中文问题办理办法
  • WebLogic UDDI Client API实例学习(一)
  • WebLogic UDDI Client API实例学习(二)
  • Weblogic中因为IP变更招致SubCoordinator not available,Transa
  • 关于在weblogic中异步伐用webservice
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .