UI 側で ExtJs + CometD を使用し、アプリケーションのバックエンドとして Spring + Jetty を使用しています。ユーザーは、Spring 認証マネージャー (j_spring_security_check) を使用して認証されます。通常の http リクエストは特定の URL パターン (/myapp) で行われ、cometd 通信は別の URL パターン (/cometd) で行われます。
サーバーでセッション タイムアウト値を 30 分に設定しています。ユーザーがログインすると、CometD アクティビティが開始されます (ハンドシェイク、接続など)。cometD が WebSocket および long-polling として使用するための Bayex トランスポートがあります。WebSocket をサポートしていないブラウザの場合、CometD 通信はロング ポーリング メカニズムを使用して行われます。
問題は、CometD クライアントからのロング ポーリングが原因で、サーバーのセッション タイムアウト カウンタは、CometD ロング ポーリングからのハートビートが到着したときに常にリセットされます。このため、サーバー上でセッションがタイムアウトすることはありません。
リクエストが特定の URL (私の場合は cometD url) に届いた場合、セッションのセッション タイムアウト値のリセットを回避する方法はありますか。
また、cometD がサーバーに送信する HTTP ヘッダー内の JSSIONID パラメータを削除できれば可能ですか。おそらく、http ヘッダーから JSESSIONID を削除できれば、サーバーはそのセッションのタイムアウト カウンターをリセットしません。
ありがとう、
ブリジ