2012-04-03 51 views
1

問題是關於使用Jersey/JAX-RS的Web應用程序。在Jersey web應用程序中存儲變量

在下面的代碼中,我希望每個用戶都有他自己的變量x的單個實例,以便他可以將其設置爲一個新值,然後檢索該新值。因爲它現在的價值不存儲。

(似乎有必要將變量存儲在Java中,而不是存儲在HTTP會話中,因爲我想對另一個類實例做同樣的事情,但不能存儲在HTTP會話中。)

代碼示例:

@Path( 「/」) 公共類網站實現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(); 
} 

}

回答

0

當你使用HTTP比你需要有關HTTP首先明確是無狀態的,

當你打電話的setValue()比它設置一個值

,但是當你調用的getValue()不是新的會話創建這樣舊值被刷新。

0

澤西島沒有會話。其餘的協議是無狀態的。真的不清楚你的問題是什麼,但是如果你想將一個變量與用戶相關聯並允許他們改變它,你真的有3個選擇

1)忽略其餘協議是無狀態的並且將httpsession球衣(它不是默認的,但它可以完成,你必須通過附加一個會話到上下文並自己得到它來使它工作)。

2)放入一個cookie

3)放入某種形式的數據庫和檢索用戶(你將不得不使用cookie或某種身份驗證,以確定您的用戶)

+0

你可以使用HttpSession與澤西島,其作品完美。 – 2012-04-06 01:50:55

+0

就像我說的,你可以連接httpsession,但它不會自動出現。 – 2012-04-06 02:47:46

相關問題