当前位置: 首页 > 知识库问答 >
问题:

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

濮宇定
2023-03-14

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

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)

我的问题是捆绑模块B应该使用datasourceB。它被配置为在所有源文件和blueprint中使用datasourceB。xml

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

我真的不明白,karaf捆绑包使用不同的数据源有多容易。

当datasourceA配置文件被删除时,则MODULE B正确使用datasourceB。

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

编辑:
我发现,当我删除datasourceA配置文件,因此Karaf删除该数据源(不在服务:list DataSource中)时,模块B正确使用datasourceB。

但是我仍然不知道为什么会这样。我错过了一些关于这个的留档吗?是pax-jdbc-config问题还是Karaf问题?

共有1个答案

葛成双
2023-03-14

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

<reference id="datasourceB" interface="javax.sql.DataSource" filter="(dataSourceName=datasourceB)" />
 类似资料:
  • 问题内容: 我正在尝试使用构建一个包含文件和图标的单文件EXE。我一生无法忍受。 如果我这样做了,那么一切都很好。当我使用时,它(在运行编译的EXE时)找不到引用的其他文件。它找到DLL和其他所有东西,只是找不到两个映像。 我查看了运行EXE时生成的,并且文件确实在其中。当我将EXE放到该临时目录中时,它会找到它们。很困惑。 这就是我添加到.spec文件中的内容 我还要补充一点,我也尝试过不要将它

  • 当我跑的时候

  • 我正在编写hibernate dto映射osgi包(用于glassfish),这个包没有看到来自类路径的资源。 清单文件: 无法从sqljdbc4.jar访问文件,错误: 但这个库存在于导出的jar文件中。 此外,我无法通过类路径访问hibernate配置文件和映射文件(类未找到和资源未找到异常也)。但下一个代码有效: 我试图调用 在sys out中可以看到: 搜索了捆绑类路径选项,但我的清单似乎

  • 我刚刚启动了一个新的应用程序,但当我点击欢迎登船页面上的“关于您的应用程序的环境”链接时,会出现这个错误。 启动应用程序时出错当Pow试图运行时,您的Rack应用程序引发了异常。 Bundler::,但找不到任何源代码 我的应用正在运行: 轨道3.2。6 Ruby 1.9。3p194 Rubygems 1.8。24 RVM 1.14。5 战俘0.4。0 我发现了类似的问题,问题在于如何让乘客安静下

  • 我在运行我的spring boot项目时遇到了一个问题: 我使用Vaadin来实现UI,使用Maven来实现Dependecies。该数据库是一个MySQL数据库,我严格按照(https://spring.io/guides/gs/accessing-data-mysql/)的说明进行了操作。 说明: 行动: 考虑重新考虑上面的条件,或者在配置中定义一个类型为'javax.sql.DataSour

  • 问题内容: 我正在做以下事情 在上面的代码中,我试图写入一个Java包中包含的资源文件。执行完代码后,我的程序可以正常运行,但是该文件只是更新web- INF中的属性文件,而不是将其更新到存储它的包中。谁能帮我弄清楚我该如何实现这一目标,或者我在这里做错了什么?非常感谢。 问题答案: 您不应该尝试写入与应用程序类一起存储的文件。根据应用程序服务器的不同,您尝试写入的位置可能无法写入,或者应用程序可