Web services JavaRESTWebService:不可能在所有集群节点上创建单例bean
我希望在Jersey 1.19.1 webservice中有一个singleton对象,它在我的所有Glassfish节点上都是相同的实例。这是我当前的实现:Web services JavaRESTWebService:不可能在所有集群节点上创建单例bean,web-services,jersey,glassfish,singleton,cluster-computing,Web Services,Jersey,Glassfish,Singleton,Cluster Computing,我希望在Jersey 1.19.1 webservice中有一个singleton对象,它在我的所有Glassfish节点上都是相同的实例。这是我当前的实现: @Singleton @ApplicationScoped @Stateless public class ValueObject { public long downloads = 0; } 及 下载文件时,计数器会增加。 下载文件并请求downloadCounter后,根据两个Glassfish节点中处理请求的节点返回1
@Singleton
@ApplicationScoped
@Stateless
public class ValueObject {
public long downloads = 0;
}
及
下载文件时,计数器会增加。
下载文件并请求downloadCounter后,根据两个Glassfish节点中处理请求的节点返回1和0
我的目标是永远得到1分。我怎样才能做到这一点
如果没有@ApplicationScoped,或者使用@Stateful而不是@Stateless,则会导致相同的结果
问候
约翰这在玻璃鱼身上是不可能的。如前所述,根据EJB3.1规范,EJB
@Singleton
注释将为每个JVM提供一个实例:
单例会话bean是每个应用程序实例化一次的会话bean组件。在容器分布在多个虚拟机上的情况下,每个应用程序将为每个JVM提供一个单例bean实例
答案还提到WildFly 10有一个机制来支持这一点,但这是一个专有的解决方案,在GlassFish中找不到
目前正在研究Payara服务器的解决方案,但尚未实施。这在GlassFish中是不可能的。如前所述,根据EJB3.1规范,EJB
@Singleton
注释将为每个JVM提供一个实例:
单例会话bean是每个应用程序实例化一次的会话bean组件。在容器分布在多个虚拟机上的情况下,每个应用程序将为每个JVM提供一个单例bean实例
答案还提到WildFly 10有一个机制来支持这一点,但这是一个专有的解决方案,在GlassFish中找不到
目前正在研究Payara服务器的解决方案,但尚未实现
@Path("downloads")
public class Downloads {
@InjectParam
private ValueObject singleton;
}