5

キャッシュ (ehcache) を介して一部のデータを共有する必要がある 2 つの異なる webapps (異なる war ファイルにパッケージ化) があります。このアイデアがうまくいくかどうか、あなたと一緒にテストしたいと思います。

私の考えは、ehcacheをブートストラップ/アクセスし、jar内にパッケージ化するサービスを作成することです。次に、その jar を 2 つの war にパッケージ化します。

  • WAR1: ehcache-service.jar
  • WAR2: ehcache-service.jar

このような構成で ehcache は機能しますか?

4

2 に答える 2

5

すべてのクラス (およびすべての依存関係) を含む個別の jar を作成し、インスタンスをキャッシュしてから、この jar と ehcache.jar をライブラリとしてデプロイする必要があります (手順を使用するアプリケーション サーバーによって異なります)。 Tomcat 6 の場合、jar を lib フォルダーにコピーするだけです。

そうすると、ehcache とドメイン クラスが、すべての Web アプリケーションで共有されるクラスローダーによって読み込まれるため、インスタンスがキャッシュされ、メモリにアクセスできるようになります。

ドメイン クラスの依存関係は重要であるため、このアプローチがプロジェクトで実行可能かどうかを確認する必要があります。また、Web アプリケーションを再起動する方法にも影響する可能性があります。


さらに、キャッシュと共有は必ずしも同じものではないことに注意してください。キャッシュは最適化です。オブジェクト インスタンスをキャッシュに入れると、キャッシュに十分なストレージ スペースがない場合や削除ポリシーの構成が不足している場合などに、すぐに削除される可能性があります。そのため、一般的な ecache の使用方法を検討する必要があるかもしれません。

于 2008-12-18T13:24:13.730 に答える
3

構成の問題は、各 war が個別の ClassLoader でロードされ、ehcache-service の 2 つのインスタンスが存在することです。各 Web アプリケーションには独自のサービスのコピーがあります。キャッシュ サービスを Web サービスとして実装し (たとえば)、war1 および war2 から使用できます。

于 2008-12-18T06:32:09.990 に答える