在Jersey Web应用程序中存储变量

时间:2012-04-03 06:56:13

标签: web-services rest jersey

问题是关于使用Jersey / JAX-RS的Web应用程序。

在下面的代码中,我希望每个用户拥有自己的变量x的单独实例,以便他可以将其设置为新值,然后检索该新值。因为它现在不存储值。

(似乎有必要将变量存储在Java中,而不是存储在HTTP会话中,因为我想对另一个类实例做同样的事情,不能存储在HTTP会话中。)

代码示例:

@Path( “/”) 公共类Web实现Web_Interface {

private int x = 9;

public Response getValue() {
    Gson gson = new Gson();
    String gsonString = gson.toJson("X = " + x);
    return Response
            .ok(gsonString)
            .build();
}

public Response setValue(int newX) {
    x = newX;
    Gson gson = new Gson();
    String gsonString = gson.toJson("X was set to " + newX);
    return Response
            .ok(gsonString)
            .build();
}

}

2 个答案:

答案 0 :(得分:0)

当您使用HTTP时,首先需要清除HTTP是StateLess,

当你调用setValue()而不是设置值

但是当你调用getValue()时,会创建新会话,因此刷新旧值。

答案 1 :(得分:0)

泽西岛没有会话。其余协议是无状态的。你的问题是什么并不是很清楚,但如果你想将一个变量与一个用户联系起来并允许他们改变它你真的有3个选择

1)忽略其余的协议是无状态的并且在jersey中连接httpsession(它默认不存在但是可以完成,你必须通过将会话附加到上下文并自己获取它来使其工作)。

2)把它放在一个cookie中

3)将其放入某种数据库并为用户检索(您必须使用cookie或某种身份验证来识别您的用户)