我正在使用“访问线程内的范围代理bean ”答案中的方法。但是我看到涉及RequestAttributes
对象的罕见死锁。死锁的主要原因是synchronized (this.sessionAttributesToUpdate)
对象中的语句和servlet session hash-map之间。通常为每个请求创建对象的实例,因此它们不会发生冲突,但是如果我将对象传递给另一个线程以使用会话 bean,则会使用相同的对象,并且有时会导致死锁。
如果当前的 http 请求没有完成,而另一个线程开始使用通过 传递的会话 bean,则会发生死锁RequestContextHolder.setRequestAttributes
。
我认为这个人提到了同样的问题,但他的问题没有得到解答:Session scoped bean遇到 deadlock。
那么,任何想法如何避免僵局?