在我在XAResource类的start()中设置的commit()中将本地数据转换为null

时间:2016-07-08 06:22:14

标签: weblogic jta distributed-transactions

SomeClass在这里扩展XAResource课程。 在SomeClass.start(),我正在使用

设置threadlocaldata
private static ThreadLocal<Xid> tlData = new ThreadLocal<Xid>();
tldata.set(Xid)

SomeClass.commit()我试图获取数据

Xid xid = tldata.get()

但我得到了null。 我不明白为什么。

1 个答案:

答案 0 :(得分:0)

我在代码中发现了一个小错误。他们使用相同的Xid对象在commit()和start()中创建一个新的Wrapper类。显然,Wrapper对象在commit()和start()中是不同的。

XidWrapper XID = new XidWrapper(Xid);
ThreadLocal<XidWrapper> tlocal = new ThreadLocal<XidWrapper>()
commit(){
  tlocal.get(XID);
}

start() {
  tlocal.set(XID);
}

注意:XID的类型为XidWrapper,它与Xid(原始)不同。