2

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 を削除できれば、サーバーはそのセッションのタイムアウト カウンターをリセットしません。

ありがとう、
ブリジ

4

2 に答える 2

1

これは、CometD メーリング リストで質問されています 。https: //groups.google.com/forum/?fromgroups=#!topic/cometd-users/xoTRl3lL9_o を参照してください。

http://bugs.cometd.org/browse/COMETD-416に投票してください。CometD 2.6.0 に含まれる可能性があります。

于 2013-03-29T12:55:31.963 に答える