2011-07-29 27 views
0

我有一個問題。我希望有人能幫助我。如何在某些類中實現活動(當前)UserContext?

我想在Servlet的HttpListener SessionInitialize方法運行時創建UserContext。 而我想在Java類中調用UserContext之後。

例如:

protected static Map userMapList = new HashMap();

此地圖保留我的應用程序用戶上下文。

但我不知道如何在某些類中實現活動(當前)UserContext?

在JSF的其它實施例:

FacesContext中 謝謝,

回答

0

使用ThreadLocal的類來存儲線程特定值。 因此,當你得到新的請求[真的是一個新的線程],你可以在那之後把它轉儲到ThreadLocal對象 之後,在同一個線程上運行的任何類都可以調用ThreadLocal.get。

檢查其api @http://download.oracle.com/javase/1.4.2/docs/api/java/lang/ThreadLocal.html

+0

謝謝你的回覆。但我有一些關於它的問題。 – oopdev

+0

感謝您的回覆。但我有一些關於它的問題。 //這個我的上下文類 'public class Contexts { \t protected static int value = 0; \t公共靜態的ThreadLocal 的ThreadLocal =新的ThreadLocal (){ \t \t保護的UserContext初值(){回報(空);} \t} ;; \t保護靜態無效addUserContext(HttpSession中的HttpSession) \t { \t \t的UserContext的UserContext =新的UserContext(HttpSession中); \t \t userContext.getSessionContext()。addAttr(「value」,value ++); \t \t threadLocal.set(userContext); \t} \t公共靜態的UserContext getUserContext() \t { \t \t返回threadLocal.get(); \t} }' – oopdev

+0

當我打電話給getUserContext有時它可以給我其他UserContext會話。我不知道爲什麼。如果我調用System.out.println(Contexts.getUserContext()。getSessionContext()。getAttr(「value」)); 假設我有3個會話。 1.session value = 0 2.session value = 1 3.session value = 2 我關閉了1個會話。 有時當我打電話3.會話價值 值= 0 我不知道爲什麼。 – oopdev

相關問題