0

Karaf 4.0.3 にロードされたさまざまな OSGi バンドルと、javax.sql.DataSourceによってロードされた複数の OSGi バンドルがありpax-jdbc-configます。たとえば、異なるデータベースに対して 2 つのデータソースが構成されているとします。

karaf@root()> service:list DataSource
[javax.sql.DataSource]
----------------------
 dataSourceName = datasourceA
 felix.fileinstall.filename = file:/opt/karaf/etc/org.ops4j.datasource-dba.cfg
 osgi.jdbc.driver.name = mysql-pool
 osgi.jndi.service.name = datasourceA
 password = secretpassword
 service.bundleid = 207
 service.factoryPid = org.ops4j.datasource
 service.id = 276
 service.pid = org.ops4j.datasource.2ab06071-d3fa-4d7e-b508-19f36892cb7e
 service.scope = singleton
 url = jdbc:mysql://mysql.example.com/dba
 user = dbuser
Provided by : 
 OPS4J Pax JDBC Config (207)
Used by: 
 MODULE B (29)

[javax.sql.DataSource]
----------------------
 dataSourceName = datasourceB
 felix.fileinstall.filename = file:/opt/karaf/etc/org.ops4j.datasource-dbb.cfg
 osgi.jdbc.driver.name = PostgreSQL JDBC Driver-pool
 osgi.jndi.service.name = datasourceB
 password = secretpassword
 service.bundleid = 207
 service.factoryPid = org.ops4j.datasource
 service.id = 278
 service.pid = org.ops4j.datasource.a7b84423-a605-4010-9806-db7bcc0bccd4
 service.scope = singleton
 url = jdbc:postgresql://postgresql.example.com/dbb
 user = dbuser
Provided by : 
 OPS4J Pax JDBC Config (207)

私の問題は、バンドルMODULE BがdatasourceBを使用する必要があることです。すべてのソース ファイルとblueprint.xmlでdatasourceBを使用するように構成されています。

...
<reference id="datasourceB" interface="javax.sql.DataSource"/>
...

karaf バンドルが異なる DataSource をどのように簡単に使用できるのか、私には本当にわかりません。

また、datasourceA構成ファイルが削除されると、MODULE BはdatasourceBを正しく使用します。

この問題は、構成ファイルの順序が間違っているか、何かの問題ですか?

編集: datasourceA構成ファイルを削除すると、Karaf がその DataSource (に存在しない) を削除すると、MODULE BがdatasourceBを正しく使用
することがわかりました。service:list DataSource

しかし、なぜこれが起こっているのかはまだわかりません。これに関するいくつかのドキュメントを読み逃しましたか? それはpax-jdbc-config問題ですか、それともカラフの問題ですか?

4

1 に答える 1

2

データソースを参照するときは、フィルターを使用して必要なものを指定できます。

<reference id="datasourceB" interface="javax.sql.DataSource" filter="(dataSourceName=datasourceB)" />
于 2016-09-06T12:12:06.057 に答える