2011-07-29 8 views
0

問題があります。私は誰かが私を助けることを願っています。いくつかのクラスでアクティブな(現在の)UserContextをどのように達成できますか?

私は、サーブレットHttpListenerをSessionInitializeメソッドが実行したときにUserContextを作成します。 そして、私はJavaクラスでUserContextを呼び出したいと思っています。

例:

保護静的マップuserMapList =新規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

お返事ありがとうございます。しかし、私はそれについていくつかの問題があります。 //この私のコンテキストクラス 'パブリッククラスコンテキスト{ \t保護された静的なint型の値= 0; \tパブリック静的ThreadLocalの THREADLOCAL =新しいThreadLocalの(){ \t \t保護UserContextはinitialValue(){リターン(NULL);} \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()。私は時々、それは私に他のUserContextセッションを与えることができgetUserContextを呼び出す \t}} ' – oopdev

+0

。どうしてか分かりません。 System.out.println(Contexts.getUserContext()。getSessionContext()。getAttr( "value"))を呼び出した場合は、 私は3セッションあるとします。 1.セッション値= 0 2.セッション値= 1 3.セッション値= 2 私は1セッションを閉じました。 時には私は3を呼び出します。セッション値 値= 0 私はなぜそれがわかりません。 – oopdev

関連する問題