Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用错误的pax jdbc数据源捆绑Karaf_Java_Jdbc_Datasource_Apache Karaf_Pax - Fatal编程技术网

Java 使用错误的pax jdbc数据源捆绑Karaf

Java 使用错误的pax jdbc数据源捆绑Karaf,java,jdbc,datasource,apache-karaf,pax,Java,Jdbc,Datasource,Apache Karaf,Pax,我们在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/kar

我们在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)
我的问题是bundle模块B应该使用数据源B。它配置为在所有源文件和blueprint.xml中使用datasourceB

。。。
...
我真的不明白,karaf bundle使用不同的数据源有多容易

当删除datasourceA配置文件时,则模块B正确使用datasourceB

这个问题是关于配置文件的顺序错误还是什么

编辑:
我发现,当我删除数据源A配置文件,因此Karaf删除该数据源(不存在于
服务:列表数据源
)时,模块B正确使用数据源B


但我还是不知道为什么会这样。我是否错过了一些关于这方面的文档?是pax jdbc配置问题还是Karaf问题?

当您引用数据源时,可以使用一个过滤器来指示您想要哪个:

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

引用数据源时,可以使用过滤器指示所需的数据源:

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


哦,天哪,你可能是对的!我没有意识到模块不知道我指的是哪个数据源,因为我只是设置了引用的ID,但没有实际的引用。。非常感谢。天哪,你可能是对的!我没有意识到模块不知道我指的是哪个数据源,因为我只是设置了引用的ID,但没有实际的引用。。非常感谢。