在jax rs中共享全局变量更改是不可能的吗?

Is it not possible to share global variable changes in jax rs?

在 JAX-RS 中执行购物车时遇到小问题。

我正在尝试将 JSON 对象添加到存储在 JAX-RS class 本身中的数组中。 在对 post 执行 shop/updateBasket 之后(我在其中向数组添加了一个新元素)之后,无法通过对 /shop/getBasket 的请求再次获取更新后的数组。

我在 posting 之后得到的数组,做 get /shop/getBasket 似乎在我更新后没有改变。

怎么了?

@Path("shop")
public class shopServer(){
    JSONArray basket = new JSONArray;

    @POST
    @Path("addToBasket/{itemID}")
    public String updateBasket(@PathParam("itemID") String itemID){
        basket.put(new JSONObject().put("obj",itemID));
        return null;
    }

    @GET
    @Path("getBasket")
    public String getBasket(){
        basket.put(new JSONObject().put("obj","asd"));
        return basket.toString();
    }
}

仅在 ajax 中调用 /shop/getBasket return 在 getBasket() 中添加的项目。

单独的请求正在获取 shopServer 的单独实例(顺便重命名为 ShopServer)。所以 POST addToBasket 得到一个实例, GET getBasket 得到另一个实例。这意味着每个请求都有一个新的空 JSONArray basket 实例。

您可以通过多种方式存储状态。这取决于您的需要。您可以使用数据库(尝试在内存中进行开发)、静态变量、单例。

另见

  • How does an JAX-RS 'endpoint' behave when making a request?