WEB开发网
开发学院软件开发Java Weblogic中因为IP变更导致SubCoordinator not ava... 阅读

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

 2009-09-22 00:00:00 来源:WEB开发网   
核心提示: 它也是遍历自己手里的scInfoList,如果发现list中某个对象和传递进来的scURL匹配,Weblogic中因为IP变更导致SubCoordinator not available,Transaction RollbackException问题调查(4),则返回这个对象,否则它创建一个新的

它也是遍历自己手里的scInfoList,如果发现list中某个对象和传递进来的scURL匹配,则返回这个对象,否则它创建一个新的scInfo, 把它放入scInfoList并返回。那么它是怎么判断匹配与否的呢?

1  final boolean representsCoordinatorURL(String aCoURL)
2   {
3     return getServerID().equals(getServerID(aCoURL));
4   }

匹配的依据就是ServerID相等,serveId是什么?其实就是DomainName+ServerName,例如,driver_test_domain+server_2。它并不关心IP, Port,所以问题就出现了。出问题的时候,我debug出来tx中的scInfoList如下:

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

图片看不清楚?请点击这里查看原图(大图)。   

因为从传递进来的scURL解析出来的ServerID也是driver_test_domain+server_2,所以tx会认为这 scURL对应的scInfo已经存在,它将直接使用这个scInfo作为subcoordinator提交事务。因为这个已有的scInfo根本就不可用,所以事务是无法提交的,就像我们开始看到的异常一样。

接下来的问题是,这个错误的scInfo是什么时候被创建的呢? SCInfo中并没有其他什么东西,核心的只有一个CoordinatorDescriptor。创建scInfo的时候也只是根据scURL,调用 Coordinator的gerOrCreate方法给该scInfo分配一个coordinatorDescriptor。这个getOrCreate 如下,

上一页  1 2 3 4 5 6  下一页

Tags:Weblogic 因为 IP

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接