私のOSGi環境では、後で使用するためにデータベースドライバをプリロードしようとしています。通常、このようにすることができます:OSGi FelixとBndTools - クラスを名前でロードする
その後、接続を作成することができます。しかし、私がOSGiのFelixでそれを使用すると、クラスが見つかりません(ClassNotFoundException
)、接続を作成できません。私はそのような何か(try-catch
が省略されている)を行うときしかし:
com.mysql.jdbc.Driver d = new com.mysql.jdbcDriver
Class.forName("com.mysql.jdbc.Driver");
その後、すべてが正常に動作し、接続が作成されます。しかし、ドライバクラスを交換することができないので、これはあまり意味がありません。
最初の方法でクラスを読み込む方法はありますか?私は正しいクラスローダーを提供しなければならないと仮定します。しかし、どこからそれを得るのですか?
MySQLドライバは、OSGiラッパーバンドルとして提供されています。
ソースにクラス名がある場合、Class.forNameでクラス・ダイナミックをロードする必要はありません。ダイナミックなクラスローディングは、ランタイム機構を介してクラス名を取得する場合にのみ使用してください。 –