Web セッションをインメモリ データベースとして使用しないでください。ほとんどのインメモリ データベースでは、ノード間でのデータの分散方法を微調整できます。また、トランザクションとリカバリのサポートも備えています。Web セッションは、ノード間での Java オブジェクトの非常に単純なレプリケーションであり、そこに重要なデータを保持することさえすべきではありません。Web セッション オブジェクトでデータを複製する主な目的は、サーバーがダウンした場合に、ユーザーが別のサーバーにログインしたままにし、その作業 (つまり、ステートフルな Web UI) を続行することです。
使用しているWebLogicのエディションによっては(取得したライセンスに基づいて)、Oracle In-memory Data GridソリューションであるCoherenceにすでにアクセスできる場合があります。
以下で適切に回答されたOPの質問を更新します。
これは実際にはユーザー セッションではないため、アプリケーションの起動時にセッションを作成し、Weblogic セッション レプリケーション機能を使用してセッション レプリケーションを実現できますか?
- または、Weblogic アプリケーション コンテキストのレプリケーションを検討する必要がありますか?それは可能ですか?
(Web アプリの) アプリケーション スコープ内のオブジェクトはレプリケートされません。JNDI を使用してそれを行うこともできますが、これらの方法はどちらもお勧めしません (何らかの方法でセッションにプッシュするためのスタートアップ リスナーを含む)。
WL セッション レプリケーションを利用するには必ず Weblogic クラスタが必要ですか、それともそれがなくても実行できますか?
はい、セッション レプリケーションが必要な場合は、WebLogic クラスタが必要です。クラスターの使用以外にもいくつかの要件があります。WLS 12.2.1 Docs のドキュメントの章6 Failover and Replication in a Clusterを参照してください。
4 つの WL サーバー (異なるボックスで実行) があり、すべてが同じクラスター内にあるとします。いずれかのノード/サーバーがデータを取得してセッションに入れると、他のすべてのノード/サーバーで自動的に複製されますか?
すべてのサーバーではなく、一部のサーバーのみです。レプリケーション グループおよびその他のオプションの使用の詳細については、ドキュメントを参照してください。
3 つのノード/サーバーをシャットダウンしたとします。これらのノードの再起動時に、稼働中のノードは自動的に開始ノードにデータをプッシュしますか?
それほど単純ではありませんが、要するに、思い通りに機能しません。セッションは、WebLogic クラスタ内のすべてのノードに複製されるわけではありません。十分な数のノード (プライマリ ノードとセカンダリ ノード) に対してレプリケーションが行われます。12.2.1 の WLS ドキュメントに関する詳細情報。
繰り返しますが、HTTP セッション レプリケーション機能をメモリ内データベースとして使用しないでください。そのために設計されたものではありません。「ある種のメモリ内データベースを構築する」代わりに、それを使用してください。
しかし、本当にHTTPセッションを「メモリー内データベース」として使用したい場合は、少なくともWebLogicのレプリケーション・メカニズムとしてCoherence*Webを使用するようにしてください。