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

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

 2009-09-22 00:00:00 来源:WEB开发网   
核心提示: 1staticCoordinatorDescriptorgetOrCreate(StringaCoURL)2{3if(aCoURL==null)returnnull;4CoordinatorDescriptorcd=5(CoordinatorDescriptor)knownServers.get

1    static CoordinatorDescriptor getOrCreate(String aCoURL)
2   {
3     if (aCoURL == null) return null;
4     CoordinatorDescriptor cd =
5       (CoordinatorDescriptor) knownServers.get(getServerID(aCoURL));
6     if (cd == null) cd = new CoordinatorDescriptor(aCoURL);
7     return cd;
8   }

从这我们可以看到,CoordinatorDescriptor也是通过ServerID标示其唯一性的,knownServers是个process-wide变量,tlog recover的时候,就会向其中加入对象。因为我的tlog如下:

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

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

如果我删掉tlog,客户端程序运行正常。因为tlog被我破坏了,没法重现这个问题,也无法作进一步的debug,所以不能证明那个错误的coordinatorDescriptor就是tlog recover时创建的。95%应该是这样的吧。

好了,问题解决了,虽然我的问题中只涉及了IP,但我认为,server端口变化也应该会引起类似的问题。这个问题算是weblogic的bug吗?应该算是吧!

补充点信息,这个是我在server端加的debug信息,可以看到,的确是在tlog中server checkpoint做recover的时候,创建了变更前IP对应的CoordinatorDescriptor信息。但因为weblogic内部比较 coordinator的时候,只比较domain name + server name,而不关心address、port等信息,最终出现subcoordinator出错。

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

Tags:Weblogic 因为 IP

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