我们有一个 Spring MVC Web 应用程序,在 JBoss 中运行,其中一些用户信息存储在 ThreadLocal 对象中。我们有一个问题,似乎有时某些请求会在任何这些请求完成执行之前覆盖另一个请求存储在 ThreadLocal 中的数据。这可能吗?
换句话说,JBoss 请求是否有可能在某些时候让步以支持另一个请求,例如在运行拦截器或访问某些类型的 bean 时?
我尝试将 JBoss 中的工作线程数量减少到 1,并且能够以这种方式相当可靠地重现我们的问题。这是我使用的配置:
<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
<virtual-server name="default-host" enable-welcome-root="true">
<alias name="localhost"/>
<alias name="example.com"/>
</virtual-server>
</subsystem>