1

この問題には多くのコンポーネントが含まれているため、見逃さないようにします。

  • EhCache は、クラスタリングのために Terracotta で使用されます
  • EhCache は、Spring キャッシングと休止状態の 2 次キャッシュの両方に使用されます。
  • キャッシュ マネージャーを 1 つだけにするために、キャッシュ マネージャーは「共有」として宣言されます。
  • さまざまな webapps として展開されている多くの web モジュールがあります
  • 内部環境では、モジュールは同じサーバーにデプロイされ、Teracotta を使用していません。本番環境とステージング環境では、モジュールは別のサーバーにデプロイされています。
  • テラコッタ クラスタリングは、デフォルトの「最終的な」整合性モードを使用しています
  • ehcache 2.5.2、休止状態 3.6、テラコッタ 3.0.6

これらの前提条件が与えられると、次のことが起こります。

  1. 1 つの Web モジュール (1 つのサーバーにデプロイされた Web アプリ) が Hibernate エンティティに変更を加えます。これは、クラスタ全体のキャッシュ エントリを更新することになっています。
  2. オブジェクトが別の Web モジュール (別のサーバー) から要求されると、1 分後であっても、エンティティがその識別子によって読み込まれると、古いオブジェクトが返されます (つまり、最初の Web アプリによる変更なしで)。

質問は: - それが起こらない理由として考えられるものは何ですか?

4

1 に答える 1

0

は、<defaultCache>を使用してクラスター化されていると宣言されていないよう<terracotta />です。他のすべてがそうだったので、最初はこの見落としに気づきませんでした。

于 2012-11-24T13:40:34.403 に答える