@ApplicationScoped 在集群中

@ApplicationScoped in a cluster

我目前没有集群环境,但我很好奇 @ApplicationScoped 在集群环境中的行为。是整个集群只有一个,还是仍然是集群中每个 JVM 一个?

我读到 @Singleton 是在

中为每个 JVM 创建的

@ApplicationScoped 的引用是代理的,因此它们将由 CDI 容器正确解析。无论应用程序中存在多少个节点,这都是正确的;状态和实例在所有客户端请求之间共享。

@ApplicationScoped bean 本身不被复制

可能有一些容器或服务器在复制这些 beans,但它不是 CDI 规范的一部分。默认情况下,bean 不会跨 JVM 共享。 CDI 将为每个集群成员/jvm 创建一个唯一的代理。

Jakarta EE 中旨在处理此问题(按规范)的部分是 EJB