将变量存储在应用程序范围java glassfish中

将变量存储在应用程序范围java glassfish中,java,web-services,variables,scope,glassfish-3,Java,Web Services,Variables,Scope,Glassfish 3,我正在尝试在glassfish Web服务的应用程序范围中存储一个数字 网络服务: @WebService() public class datacheck { //TODO 080 disable sql_log in the settings of hibernate //TODO 090 check todo's from webservice_1 private int counter = 5; 当我请求计数器变量时,我得到5 及 返回6但是 当我之后尝试这样

我正在尝试在glassfish Web服务的应用程序范围中存储一个数字

网络服务:

@WebService()
public class datacheck {
    //TODO 080 disable sql_log in the settings of hibernate
    //TODO 090 check todo's from webservice_1

    private int counter = 5;
当我请求计数器变量时,我得到5 及

返回6但是 当我之后尝试这样做时,我再次得到5:

@WebMethod(operationName = "getCounter")
public Integer getCounter() {
    return counter;
}

如何存储可用于webservice中所有方法的变量?

这在一定程度上取决于您的用例和体系结构。如果每个用户都应该看到递增计数器的结果,那么您可以在代码中静态地声明它

private static int counter = 5;
但是,这只有在应用程序中只有一个JVM时才起作用,并且需要仔细考虑同步问题

或者,您可以在外部将其持久化(例如,持久化到数据库或文件)

实现该模式应该是可行的。您将在整个JVM中得到相同的实例。不过要小心:从不同的线程向单例写入可能是一个满足的锁,而这就是龙


如果您想将对象约束为一个线程(我认为glassfish是每个请求一个线程,但请不要引用我:)

thx,这就是我要找的。我将尝试此方法并考虑可能出现的同步问题。
private static int counter = 5;