2012-01-05 14 views
0

私たちは単純なJavaベースのアプリケーションを持っています。そこでは、クライアントからのcreateSession()リクエストを受け取ってセッションを作成します。次に、セッションで「操作」を実行し、最後にrelease()を受け取ると、セッションオブジェクトを破棄します。今私はアプリケーションのセッションタイムアウト機能を実装したいと思います。セッションが設定可能な時間アイドル状態になっている場合は、セッションを破棄します。私は特定の時間間隔の後に目を覚まし、すべてのセッションオブジェクトを反復する専用のスレッドを作成できます。各オブジェクトの "lastAccessedTimeStamp"に基づいて、適用可能な場合はrelease()を呼び出します。それ以外に何ができますか?ここで使用できる他のAPIは何ですか?Javaでセッションタイムアウトを実装する方法は?

+0

アプリケーションのコンテキストに関する詳細を教えてください。それはアプリケーションサーバー(JavaEE)またはスタンドアロン(JavaSE)で失われますか? – Riduidel

+0

これはWebサーバー(apache-tomcat + apache-cxf)です。しかし、作成しているセッションはカスタムセッション(POJO)です。したがって、POJOのライフタイムは、web.xmlのsession timeoutパラメータで制御することはできません。 –

答えて

1

これはどのような用途ですか? Webアプリケーションの場合、セッション処理(タイムアウトを含む)はサーブレットコンテナによって自動的に行われます。タイムアウト値はweb.xml設定ファイルで設定されます。

これらのホイールをすべて再作成したい場合は、定期的(毎分1回)のすべてのセッションをチェックし、タイムアウトしたものを解放する別のスレッドが分かりやすい実装のように聞こえます。

+0

これは同じコメントがここに適用されます。これはWebサーバ(apache-tomcat + apache-cxf)です。しかし、作成しているセッションはカスタムセッション(POJO)です。したがって、POJOのライフタイムは、web.xmlのsession timeoutパラメータで制御することはできません。それらを使用できるAPIの提案はありますか? –

+1

@Arnab Biswas:そうです。サーブレットAPI。そこでは、成熟した、よくサポートされたセッションの実装があります。何らかの理由で車輪の再発明を主張すれば、あなた自身はあなた自身でありますが、それがあなたが望むものです。 –

+0

ありがとうございます。はい、Servlet APIで定義されているセッション処理メカニズムを使用することはできません。私の質問は私のセッションがbasicay POJO、ehatのメカニズムはタイムアウトを実装するために使用することができますか? java.util.concurrentパッケージのものは何ですか? –

関連する問題