2

Tomcat が提供する Web アプリケーションのセッション タイムアウトに少し問題があります。Tomcat のドキュメントを読むと、セッションは web.xml ファイルで構成できる時間が経過すると期限切れになります。

<session-config>
        <session-timeout>30</session-timeout>
    </session-config>

質問) これは、ユーザーのセッションが作成されてから 30 分ということですか? または、セッションが最後にアクセスされてから 30 分後ですか?

最初に考えたように、セッションが最後にアクセスされてから 30 分経過している場合、この動作は見られないようです。サイトを使用しているため、セッションが失われているようです。この設定以外に、セッションの動作を構成する方法はありますか? 足りないものはありますか?

アパッチ トムキャット/6.0.20

4

1 に答える 1

8

アプリケーションに接続すると、Web ブラウザーのセッションが開始されます。非アクティブの最大期間 (30 分) が経過すると、Tomcat はサーバー上のセッションを閉じます。

このタイムアウトは、現在のページを更新したり、アプリケーションの制御下にある他のページをナビゲートしたりするなど、Web ブラウザーでアクティビティが発生するたびにリセットされます。ブラウザー ウィンドウを開いたままにしておくだけでは、ブラウザー上でアクティビティが生成されないため、セッションを開いたままにすることはできません。

説明したように、web.xml ファイルで設定できます。

これは、サーブレット コンテナがこのセッションを無効にするまでのクライアント リクエスト間の時間を秒単位で指定しsessionます。setMaxInactiveInterval(int interval)

ブラウザでCookie有効になっていることを確認する必要があります。それ以外の場合は、リクエストごとに新しいセッションを作成します。HttpServletResponse.encodeURL(String url)アプリケーションの URL ごとにを呼び出す必要があります。APIドキュメントから:

「指定された URL をセッション ID を含めてエンコードします。エンコードが不要な場合は、URL を変更せずに返します。このメソッドの実装には、URL でセッション ID をエンコードする必要があるかどうかを判断するロジックが含まれています。たとえば、 、ブラウザが Cookie をサポートしている場合、またはセッション トラッキングがオフになっている場合、URL エンコードは不要です。

堅牢なセッション トラッキングを行うには、サーブレットによって発行されるすべての URL をこのメソッドで実行する必要があります。そうしないと、Cookie をサポートしていないブラウザーでは URL 書き換えを使用できません。」

于 2010-08-26T22:29:45.127 に答える