使用 Java 8 并行流时丢失 Java EE 请求范围是否正常?

xst*_*ing 5 java jboss java-8 wildfly jakarta-ee

在我们公司,我们正在开发在 wildfly 10.1 中运行的准标准 REST 服务。每个请求都拥有一个租户标头,该标头将被过滤器拦截,租户信息将存储在一个@RequestScopedbean 中,以供稍后在 rest 或服务层中使用。到现在为止还挺好。现在我们发现服务中的一些代码使用的是 Java 8 并行流,并且无法使用@RequestScopedbean 查找当前租户。我们对此进行了多次验证。使用非并行流为我们解决了这个问题。

这是正常行为吗?我们真的很困惑,使用标准的 Java 8 特性破坏了我们预期的容器行为。

还有其他这样的罪魁祸首我们需要照顾吗?

Gab*_*ica 5

即使在托管上下文中,并行似乎也会产生线程。

然而,RequestScoped 是使用 a 处理的ThreadLocal(我们仍然使用旧的多线程模型,即 http Request = 1 线程)。

所以是的,这很正常