OSGi でのクラスの可視性について混乱しています。Apache Felix を実行しており、次のバンドルをロードしています。
- 、
antlr
、asm
およびeclipselinkjpa
のバンドルcore
javax.persistence
1.99用の OSGi-fied jarcom.mysql.jdbc
ドライバーを含む OSGi-fied jar- 注釈付きのエンティティ クラスと
persistence.xml
- 呼び出す私自身の別のバンドル
Persistence.createEntityManagerFactory(String, Map)
さて、私が混乱しているのは、どのバンドルが MySQL ドライバーを認識できる必要があるかということです。これは EntityManagerFactory を作成するバンドルだと思っていましたが、そのマニフェストにインポートすると ClassNotFound エラーが発生します。jpa
次に、eclipselinkバンドルのマニフェストからインポートしようとしましたが、やはり失敗しました。永続化ユニット (エンティティ クラスおよびpersistence.xml
) を含むバンドルのマニフェストからインポートした場合にのみ機能します。
そのため、PU のバンドルのクラスローダによってデータベース ドライバが検索されているように見えますが、それは私には意味がありません。どうしたの?
これに関する簡単なドキュメントが見つからないようです。これらのスライドはいくつかのヒントを提供しますが、完全に網羅しているわけではありません。