複数の OSGi バンドルから構築されたプロジェクトがあります。それらの 1 つは、プロジェクト全体で使用できる DataSource を定義する汎用データベース バンドルです。このサービスのSpring Beanの定義は次のとおりです。
<osgi:service interface="javax.sql.DataSource">
<bean class="org.postgresql.ds.PGPoolingDataSource">
<property name="databaseName" value="xxx" />
<property name="serverName" value="xxx" />
<property name="user" value="xxx" />
<property name="password" value="xxx" />
</bean>
</osgi:service>
ここで、この DataSource を別のバンドルで使用すると、エラーが発生します。
No suitable driver found for jdbc:postgresql://localhost/xxx
org.postgresql.Driver を DriverManager に追加するために、次のことを試しました。
次のように、Spring コンテキストでその Driver の空の Bean をインスタンス化します。
<bean class="org.postgresql.Driver" />
次のように、クラスの 1 つで Driver を静的にインスタンス化します。
Class.forName("org.postgresql.Driver");
を。
org.postgresql
としてパッケージを追加するときにもこれを試しましDynamicImport-Package
た。META-INF\services\java.sql.Driver
コンテンツを含むファイルを追加しましたorg.postgresql.Driver
これらの解決策はどれも役に立たないようです。