2011-07-18 20 views
2

大きなJPAアプリケーションに別のL2キャッシュを使用したいと考えています。複数のサーバー間で共有キャッシュを実現しようとしています。JPA 2レベル2キャッシュに別の実装を使用する方法は?

EclipselinkをJPAの実装として使用していますが、一部のレガシーコードでは内部Eclipselink APIを使用しているため、切り替えはオプションではありません。

Coherence/Toplink Gridは高価すぎるようです(4000 $/cpu?)。

別のキャッシュ実装をプラグインできる方法はありますか? JPA 2で何かが指定されていますか(仕様には何も見つかりませんが、誤解している可能性があります)?独自の(= Eclipselink特有の)解決策は、多少文書化されているか、または単純なものであれば問題ありません。

答えて

1

別のキャッシュ実装をプラグインできる方法はありますか?

あなたはEclipseLinkを付属していますEclipseLink shared object cacheの使用を調査しましたか?説明によれば、共有オブジェクトキャッシュは単一のEntityManagerだけに限定されず、いくつかのEntityマネージャのライフサイクルにわたって、すなわちいくつかのトランザクションにわたって利用可能である。これはもちろん、EntityManagerFactoryのライフサイクルに制約されます。これは、アプリケーションがコンテナ内で実行されている限り有効です。

EclipseLink共有オブジェクト・キャッシュはOracle Coherenceとは異なり、別途ライセンスおよびパッケージ化されていないと考えられ、すべてのコンテナで使用できるようになります。

+0

これはデフォルトのキャッシュ実装です。サーバー間で共有されません。別のキャッシュ実装をプラグインしたいのですが、現在はその方法を見つけることができません。 – ymajoros

+1

これは、サーバーのキャッシュを調整できるように、キャッシュ調整をサポートしています。 –

+0

大丈夫、私はそれに行きます – ymajoros

1

JPAは、プラガブルキャッシュインターフェイスを指定していません。それが実現するかどうかはわかりませんが、復活したJSR-107がJPAが使用できるオブジェクト・キャッシュへの標準APIの定義を完了するまではないと私は考えています。また、別のキャッシュ・インターフェースを定義しているJSR 347を待たなければならないかもしれない.JCacheとの関係はいくぶん不明である(107族の専門家グループのメンバーの中には、独立した共和国を宣言しようとしている、メキシコ侵攻)。

これまでは、プロバイダのキャッシュインターフェイスを利用しています。私はEclipseLinkのエキスパートではありませんが、最後に見たときに、プラグイン可能な第2レベルのキャッシュ・インターフェースを見ることができませんでした。実際には、私はHibernateとDataNucleusだけがそれらを持っていると思います。

+0

しかし、HibernateまたはDataNucleusに変更する方法はありません。 – ymajoros

1

ほとんどのキャッシュ実装は、ローカル(Coherence以外)では配布されません。 EclipseLinkはすでに、クラスタ内のキャッシュ用に共有キャッシュとキャッシュ調整をサポートしています。

どのキャッシュを使用する予定ですか?また、どのようなメリットがありますか?

EclipseLinkはサード・パーティ・キャッシュとの統合をサポートしていますが、このAPIはCoherence統合用に作成されましたが、Coherenceは現在統合を提供する唯一のキャッシュです。

+0

ehcacheのようなものが配布されています。私はそのようなものを使うべきか、Eclipselinkのキャッシュ調整だけを使うべきかを決めるつもりです。 – ymajoros

+0

私は、あなたがELのメーリングリストに言及しているCacheInterceptorについて語っていると思いますか? – ymajoros

+0

は、weblogicクラスタ間でキャッシュ調整を実行できますか? –

関連する問題