Wir haben verschiedene OSGi Bundles in Karaf 4.0.3 geladen und mehrere javax.sql.DataSource
geladen von pax-jdbc-config
. Zum Beispiel sind zwei Datenquellen zu verschiedenen Datenbanken konfiguriert:Bundle in Karaf mit falschem pax-jdbc DataSource
[email protected]()> 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)
Mein Problem ist, dass Bündel MODUL B sollte datasourceB verwenden. Es konfiguriert ist datasourceB in allen Quelldateien zu verwenden und in blueprint.xml
...
<reference id="datasourceB" interface="javax.sql.DataSource"/>
...
Ich verstehe nicht wirklich, wie kann leicht Karaf Bundles verwenden unterschiedliche Datasource.
Und wenn datasourceA Konfigurationsdatei entfernt wird, dann MODUL B richtig datasourceB verwenden.
Ist dieses Problem falsch Bestellung von Konfigurationsdateien oder etwas?
EDIT:
Ich habe herausgefunden, dass, wenn ich datasourceA Config-Datei zu entfernen und damit Karaf entfernt, dass Datasource (nicht vorhanden in service:list DataSource
), MODUL B richtig datasourceB verwendet.
Aber ich weiß immer noch nicht, warum das passiert. Habe ich verpasst etwas Dokumentation darüber gelesen? Ist es pax-jdbc-config
Problem oder Karaf Problem?
Oh mein Gott, du bist wahrscheinlich Recht! Ich wusste nicht, Module können nicht wissen, welche Datenquelle ich meine, weil ich nur die ID der Referenz, aber keine tatsächliche Referenz .. Danke! – everis