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如下:
图片看不清楚?请点击这里查看原图(大图)。
因为从传递进来的scURL解析出来的ServerID也是driver_test_domain+server_2,所以tx会认为这 scURL对应的scInfo已经存在,它将直接使用这个scInfo作为subcoordinator提交事务。因为这个已有的scInfo根本就不可用,所以事务是无法提交的,就像我们开始看到的异常一样。
接下来的问题是,这个错误的scInfo是什么时候被创建的呢? SCInfo中并没有其他什么东西,核心的只有一个CoordinatorDescriptor。创建scInfo的时候也只是根据scURL,调用 Coordinator的gerOrCreate方法给该scInfo分配一个coordinatorDescriptor。这个getOrCreate 如下,
- ››iphone图片拉伸的几种方法
- ››iphone正则表达式的简单使用
- ››iPhone开发Unresolved Symbols CAKeyframeAnimati...
- ››IPhone开发-“此证书是由未知颁发机构签名”解决方...
- ››IPhone开发-整合私钥和证书,生成.p12文件
- ››iPhone应用开发-UIPickerView选取器详解
- ››iphone 获取屏幕的宽度和高度
- ››iPhone读取工程包中的二进制文件
- ››iPhone新手机 不挂YouTube APP
- ››iPhone 获取指定格式的时间和日期
- ››IPad使用UIModalPresentationFormSheet时隐藏键盘...
- ››IPmt函数用法
更多精彩
赞助商链接