2011-12-26 10 views
0

Webアプリケーションで1分間ユーザーが使用していない場合に、ブラウザセッションの有効期限を切ってもよろしいですか?私は二つのことをやってみました: -Javaでユーザーが使用していない場合にブラウザセッションを終了するにはどうすればよいですか?

Approach1を: -

<session-config> 
    <session-timeout>1</session-timeout> 
</session-config> 

Approach2 web.xmlに以下のコードを置く: -

session.setMaxInactiveInterval(1*60); 

どちらaproachesが期限切れになることはありませんセッション。ユーザーが3分間活動をしなくても、私は続行したくないですか?

動作しない場合: -ログイン画面に直接行ってログインすると動作しません。

-私は上記のWebアプリケーションをWebアプリケーション2と言う別のWebアプリケーションと統合すると同じアプローチが動作しますが、この場合、私はwebapp2にリンクを提供しました。このリンクは、ログイン資格情報を要求せずにwebapp1に直接接続します。ここでは、ユーザーが1分間活動をしない場合にログアウトしますか?

web.xmlは同じですが、私がsession.setMaxInactiveInterval(1 * 60)を置くクラスはどちらの場合でも実行されますが、手動でログインすると最初のケースで動作しない理由はありませんか?

答えて

0

サーバーは、クライアント側からの非アクティブを がweb.xml/session/session-time-outで定義された期間検出した場合にのみタイムアウトします。クライアントからの要求を送信して動作しているかどうかをテストし、応答が得られたらブラウザウィンドウを閉じるだけです。セッションタイムアウト間隔後にもう1つの要求を送信します。新しいセッションであることを確認します(sessionIDを確認してください)。さらに助けますか? enter code here以下をお読みください -

JavaベースのWebアプリケーション用のWebアプリケーションリスナーがあります。 これらのリスナーは、クライアントの要求、セッション、および関連するものをリッスンします。セッションタイムアウト処理の場合は、セッションリスナーを使用できます。ステップ1 - Webアプリケーションリスナー含まれるようにweb.xmlファイルを変更します。

<listener> 
    <listener-class>some.package.name.MySessionListener</listener-class> 
</listener> 

をそして、今、あなたのソースディレクトリに上記のクラスを作成します。

package some.package.name; 

public class SessionListener implements javax.servlet.http.HttpSessionListener { 

    public void sessionCreated(HttpSessionEvent arg0) { 
     //write your own code for when new session is created. 
    } 

    public void sessionDestroyed(HttpSessionEvent arg0) { 
     //Write your own c`enter code here`ode for when session is destroyed. 
    } 
} 

は、あなたがそれが役に立つことを願っ。 :)。

+0

hi sadsa、返信ありがとうございます。私のアプリケーションは、ServletContextListenerを実装しているリスナーを使って動いています。しかし、私の主な質問は、資格情報を使って直接ログインしているときに、なぜ他のシナリオで動作しないのかということです –

関連する問題