对于第一个问题,只要在每次调用结束时都删除ThreadLocal变量,就没有问题。这很重要,因为容器(servlet或ejb)通常使用线程池,因此会重用线程,这有两个作用:一个“调用”可能会看到来自上一个调用的线程本地信息,以及如果您从容器中删除应用程序而没有停止JVM有些类可能不会被垃圾回收,因为它们仍被容器线程引用。因此,将数据放在try
/ finally块中的threadlocal中,并在final部分中删除。
这是显示解决问题的一种方法的文章:Web应用程序中的ThreadLocal
对于第二个问题,因为数据是线程本地的,它不会带来远程调用,所以您必须在接口中添加一个参数,在一侧提取线程本地数据,然后在另一侧重新创建它…



