我们有一个在JBoss中运行的Spring MVC web应用程序,其中一些用户信息存储在ThreadLocal对象中。我们有一个问题,在某些请求完成执行之前,某些请求似乎会覆盖另一个请求存储在ThreadLocal中的数据。这个是可能的吗?
换句话说,在某些情况下,JBoss请求有可能让位于另一个请求吗?例如,当运行拦截器或访问某些类型的beans时?
我尝试将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>发布于 2013-05-27 20:08:01
"...读取另一个请求已存储在ThreadLocal中的数据。“
我认为这个问题的标题应该是"May Spring MVC resue thread for consecutive“,答案是”是的,它一直都是这样做的“。
也许您认为在每种情况下都清理了线程本地存储,但在servlet环境中可能会出现各种异常情况,其中一些完全不受您的控制。例如,客户端可以随时关闭TCP连接。
https://stackoverflow.com/questions/16772760
复制相似问题