V 3.0は言うサーブレット仕様のセクション2.3.3.4、
は、アプリケーションによって作成されたスレッドは、要求または応答[またはセッション】オブジェクト、もののようなコンテナ管理 オブジェクトを使用する場合オブジェクト は、オブジェクトのライフサイクル[...]内でのみアクセスする必要があります。
HttpSession
オブジェクトはコンテナ管理オブジェクトですが、そのライフサイクルはサーブレット仕様で明確に定義されていません。しかし、セッションが無効にされたときに、明示的にまたはタイムアウトによってライフサイクルが終了し、そのセッションに属する要求が処理されていない場合、ライフサイクルを終了すると考えられることは考えられます。その後、セッションオブジェクトに引き続きアクセスすると、すべてのベットはオフになります。特に、コンテナは、セッションオブジェクトを含む管理オブジェクトをキャッシュして再利用することが許可されています。
サーバーAがセッショントラッキングに参加していない場合、すべての要求は新しいセッションに割り当てられ、各セッションの有効期間は1つのタイムアウト期間になります。この場合、セッションが1回の計算中にタイムアウトしないように、[default]タイムアウトを十分に長く設定することを検討できます(ただし、下記参照)。一方、サーバA がをセッショントラッキングに参加させている場合、セッションオブジェクトは各要求に対して変更可能になります。
サーバーAがセッショントラッキングに参加するかどうかに関わらず、コンテナ管理オブジェクトにアクセスするために手動で起動するアプリケーションスレッドなどのアプリケーションスレッドにとっては、フォームが不適切です。データを提供するためには、別の仕組みを使用する方が良いでしょう。
なぜ最初にセッションを使用していますか?スレッドが必要とする情報をRunnableのコンストラクタに渡すのはなぜですか? –
ユーザーがシステムにログインすると、httpセッションにユーザーの資格情報が保存されます。 サーバーAが通知を送信すると、通知が送信され、ログインとして機能します。これは、HttpSessionで登録する情報です。 しかし、場合によっては、ユーザー情報が変更されたことに気付きました。 –