java - 使用 Java 8 并行流时松开 Java EE 请求范围是否正常?

标签 java jakarta-ee jboss java-8 wildfly

在我们公司,我们正在开发在 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/

相关文章:

java - Logback RollingFileAppender 不记录 Hibernate 消息

java - 流口水为什么 StatefulKnowledgeSession 有不同的知识库

java - Android:打开fileBrowser获取文件路径

java - HTTP 状态 404 -/<servlet-name> - 请求的资源 [ServletName] 不可用

java - quartz - ClassCastException

jsf - JavaEE6 : How to safeguard web application when the database shut down

java - 单例类的不同锁

java - 这个架构定义可以吗?多层(Spring/多数据库)

java - 如何创建类的公共(public)对象以在 TestNG 类的所有方法中使用?

java - Java中如何确定对象的大小