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