マルチプレイヤーオンラインゲームを開発しています。次の問題があります。
ユーザーがサーバーとの接続を切断すると、再接続する必要があります。最初の接続時、登録時に、登録モジュールは接続チャネルへの参照を保持する特別な ResponseDispatcher を生成します。ただし、ユーザーがログアウトすると、このチャネルは無効になります。問題を検出してリソースをクリーンアップすることはできますが、ユーザーが承認して再接続したときにチャネルを更新するために、登録モジュールへの参照とゲーム モジュールへの接続モジュールを保存する必要があります。これにより、モジュール間に多くの相互依存関係が生まれ、保守が非常に困難になります。
サーバーのすべてのモジュールからチャネルおよびセッション リソースへの参照を取得できるように、サーブレット コンテナーの HttpSession のようなものが必要です。
HttpSession はサーブレットにどのように実装されていますか? すべての JSESSIONID を格納するグローバル ハッシュマップであり、コンテナはどの属性マップを返すかを決定しますか? それがグローバル sysmbol テーブルである場合、パフォーマンスに影響しますか (hashMap の時間は O(1) ですが、セッションの変更がある可能性があるため、おそらく同期する必要があります)。
PS。この場合の設計パターンのいくつかの推奨事項も役立つかもしれません。