2010-11-23 10 views
4

私の問題に関してはstackoverflowで他にも多くの質問がありましたが、適切な解決策が見つかりませんでした。OSGIアプリケーションでEntityManagerを提供するためのベストプラクティス

私はOSGIアプリケーション(Equinox)を開発し、JPA(EclipseLink)を使用しています。今度は、EntityManagerを必要とするバンドルでEntityManagerを取得する最善の方法を尋ねます。 EntityManagerFactoryをサービスとして公開し、それを使用してEntityMangerを取得すると、EntityManagerを使用するすべてのバンドルにpersistence.xmlを提供する必要があります。 EntityMangerの1つのインスタンスを共有するutitlityクラスを作成し、それをサービスとして公開すると、スレッド同期の問題に遭うことが恐れられます。

OSGIとJPAの使用時にEntityManagerを提供するためのベストプラクティスはありますか?

おかげ

ダン

答えて

1

のOSGi内で使用されるあなたはpersistence.xmlのが「JPA-PersistenceUnits:myPersistenceUnit」を追加することによって見つけることができるバンドルした宣言する必要がpersistence.xmlのが配置されているバンドルのMANIFEST.MFに。 EclipseLinkはこの宣言を検索し、このバンドルのクラスローダーを使用してpersistence.xmlを取得します。次に、EntityManagerFactoryをサービスとして公開することができ、サービスを使用するすべてのバンドルでpersistence.xmlを共有する必要はありません。しかし、これはEclipseLinkでのみ動作すると思います。

0

私はpersistence.xmlのを知ること、各クライアント・バンドルなしOpenJPAのと別のモデルの束とのセットアップを取得するためにthis blogを使用しました。 EclipseLinkはJPAプロバイダなので、ほぼ同じ設定にする必要があります。ブログの一番下にリンクされているexample codeを確認してください。 EclipseLinkので

関連する問題