我正在通过将主题类存储在 ThreadLocal 映射中来试验授权和身份验证的解决方案。该设计是针对 API 的,因此我无法访问所涉及的 servlet,并且我需要使用 EJB3(因此CDI不是一个选项)。我有几个关于在 EJB3 中使用 ThreadLocal 的问题
假设每个请求在完成后都会清理其 ThreadLocal 映射,那么将 ThreadLocal 变量与无状态会话 bean 一起使用是否有任何风险?换句话说,是否存在两个请求同时访问同一个线程的风险?
有没有办法强制 servlet 在完成后清理 ThreadLocal?我研究过拦截器,但我了解到它们在 EJB3 中的工作很差,并且在不同的应用程序服务器中工作得也不尽相同。还有什么办法吗?