2

フラッシュベースのトレーニング資料を提供している間、ユーザーは定期的にHttpSessionセッションのタイムアウトを経験します。現在、非アクティブタイムアウトはデフォルト(30分)に設定されています。

質問:

  1. タイムアウトを防ぐためにトレーニングフラッシュビデオを要求しているユーザーのMaxInactiveIntervalを増やすことを試みるのは良い考えですか?

  2. HttpSessionがトレーニングコンテンツの表示に関連付けられている場合、サーブレットライフサイクルリスナーを使用してHttpSessionを再アクティブ化することをお勧めしますか?--これにより、HttpSessionオブジェクトがタイムアウトするタイミングをより正確に制御できる場合があります。

  3. 一度に実際にこの資料を表示するのはごく一部のユーザーだけですが、これを行うために考慮すべきパフォーマンス上のペナルティはありますか?

4

2 に答える 2

2

むしろ、バックグラウンドで ajax ポーリングを起動します。

jQueryを少し使ったSSCCEを次に示します。コピーして貼り付けて実行するだけです(実際のコードに合わせてフラッシュオブジェクトを変更してください)。

<!doctype html>
<html lang="en">
    <head>
        <title>SO question 2290101</title>
        <script src="http://code.jquery.com/jquery-latest.min.js"></script>
        <script>
            $(document).ready(function() {
                setInterval(function() {
                    $.get('poll');
                }, ${(pageContext.session.maxInactiveInterval - 10) * 1000});
            });
        </script>
    </head>
    <body>
        <object type="application/x-shockwave-flash" ... >
            ...
        </object>
    </body>
</html>

ここで${pageContext.session.maxInactiveInterval}は、セッションがまだ存続していない残りの秒数を返します (ポーリングに間に合うように少し短縮され、setInterval()予想に合うようにミリ秒に変換されます)。は、 of にマップされ、基本的にメソッドに次の行を含む$.get('poll')サーブレットを呼び出す必要があります。url-pattern/polldoGet()

request.getSession(); // Keep session alive.

それでおしまい。

于 2010-02-18T17:56:15.833 に答える
1

Flash ビデオは HTML ページに埋め込まれていますか? もしそうなら、セッションを維持するために定期的に「ハートビート」をサーバーに送信するページでAJAX呼び出しを行うことができます。

于 2010-02-18T16:18:02.677 に答える