我正在编写一个应用程序,使用MDBs、EJBs,并需要使用ThreadLocal在多个EJBs和Helper类之间传递和记录变量,直到事务完成。
流程是:
从MDB的onMessage()开始 -> 一些业务代表EJBs -> 一些helper
问题:
这个应用程序在Weblogic中运行,Weblogic从它的线程池中重新使用线程。所以是否存在跨线程数据损坏的可能性?使用ThreadLocal.remove()的解决方案是否足够安全?
除了将对象作为参数传递给所有方法之外,还有没有替代ThreadLocal的方法?