【问题标题】:Bundle in Karaf using wrong pax-jdbc DataSource使用错误的 pax-jdbc 数据源在 Karaf 中捆绑
【发布时间】:2016-09-06 08:29:01
【问题描述】:

我们在 Karaf 4.0.3 中加载了不同的 OSGi 包,pax-jdbc-config 加载了多个 javax.sql.DataSource。例如,配置了两个数据源到不同的数据库:

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 bundles 使用不同的 DataSource 有多容易。

datasourceA 配置文件被移除后,MODULE B 正确使用 datasourceB

这个问题是因为配置文件的错误顺序还是什么?

编辑:
我发现当我删除 datasourceA 配置文件并因此 Karaf 删除该 DataSource(service:list DataSource 中不存在)时,MODULE B 正确使用 datasourceB强>。

但我仍然不知道为什么会这样。我是否错过了阅读有关此的一些文档?是pax-jdbc-config问题还是Karaf问题?

【问题讨论】:

    标签: java jdbc datasource apache-karaf pax


    【解决方案1】:

    当你引用数据源时,你可以使用一个过滤器来指明你想要的那个:

    <reference id="datasourceB" interface="javax.sql.DataSource" filter="(dataSourceName=datasourceB)" />
    

    【讨论】:

    • 天哪,你可能是对的!我没有意识到模块不能知道我的意思是哪个数据源,因为我只是设置了引用的 ID,但没有实际的引用。谢谢!
    猜你喜欢
    • 2018-12-22
    • 1970-01-01
    • 2016-07-14
    • 2015-12-05
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    相关资源
    最近更新 更多