WEB开发网
开发学院软件开发Java 如何在Weblogic的全局事务执行多线程操作 阅读

如何在Weblogic的全局事务执行多线程操作

 2009-09-22 00:00:00 来源:WEB开发网   
核心提示: 下面是关于上面这段测试代码的一些解释和代码中的限制:1:为什么会在66行出现Connectionconn=getConnection("t3://localhost:8011","TestXADS");这个看似无用的语句?Weblogic的TM实现中只有有

下面是关于上面这段测试代码的一些解释和代码中的限制:

1:为什么会在66行出现Connection conn = getConnection("t3://localhost:8011", "TestXADS");这个看似无用的语句?Weblogic的TM实现中只有有XAResource参与到这个global transaction的server实例才有资格充当这个global transaction的coordinator,其他的server实例只能充当sub-coordinator。而且总是第一个参与全局事务的 XAResource的实例充当coordinator,因为coordinator的委任决定于TX开始后,第一次RMI request发送给哪个server。Connection conn = getConnection("t3://localhost:8001", "TestXADS") 用于指定这个global transaction的coordinator为8011这个server。如果没有这个语句,thread1,thread2启动后,它们开始XA操作时,每个XAResouce都会把自己当作这个TX的coordinator(Thread1委任8011,Thread2委任8021),这样就会出现如下的异常,

javax.transaction.TransactionRolledbackException: Current server is the coordinator and transaction is not found.  It was probably rolled back and forgotten already.
 at weblogic.rjvm.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:108)
 at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:290)
 at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:247)
 at weblogic.jdbc.common.internal.RmiDataSource_814_WLStub.getConnection(Unknown Source)
 at weblogic.transaction.internal.DriverTest1.getConnection(DriverTest1.java:39)
 at weblogic.transaction.internal.DriverTest1.access$0(DriverTest1.java:34)
 at weblogic.transaction.internal.DriverTest1$SQLThread.run(DriverTest1.java:135)

上一页  1 2 3 4  下一页

Tags:如何 Weblogic 全局

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