在我们公司,我们正在开发在 wildfly 10.1 中运行的准标准 REST 服务。每个请求都拥有一个租户 header ,该 header 将被过滤器拦截,租户信息将存储在 @RequestScoped
bean 中,供以后在其余或服务层中使用。到目前为止,一切都很好。
现在我们发现服务中的一些代码正在使用 Java 8 并行流并且无法使用 @RequestScoped
bean 来查找当前租户。
我们多次验证了这一点。使用非并行流为我们解决了这个问题。
这是正常行为吗?我们真的很困惑,使用标准的 Java 8 特性会破坏我们预期的容器行为。
还有其他我们需要处理的此类罪魁祸首吗?
最佳答案
It seems即使在托管上下文中,并行也会产生线程。
但是 RequestScoped 是使用 ThreadLocal
处理的(我们在这里仍然处于良好的旧多线程模型中,即 http Request = 1 线程)。
所以是的,这是正常的
关于java - 使用 Java 8 并行流时松开 Java EE 请求范围是否正常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43607264/