SomeClass
在这里扩展XAResource
课程。
在SomeClass.start()
,我正在使用
threadlocaldata
private static ThreadLocal<Xid> tlData = new ThreadLocal<Xid>();
tldata.set(Xid)
在SomeClass.commit()
我试图获取数据
Xid xid = tldata.get()
但我得到了null
。
我不明白为什么。
答案 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(原始)不同。