通过 karaf 4 上的 pax-jdbc 配置文件创建 PostgreSQL 数据源
Creating PostgreSQL DataSource via pax-jdbc config file on karaf 4
在我的 karaf 4.0.8 上,我安装了功能 pax-jdbc-postgresql
。已安装 PostgreSQL 的 DataFactory:
org.osgi.service.jdbc.DataSourceFactory]
osgi.jdbc.driver.class org.postgresql.Driver
osgi.jdbc.driver.name PostgreSQL JDBC Driver
osgi.jdbc.driver.version PostgreSQL 9.4 JDBC4.1 (build 1203)
service.bundleid 204
service.scope singleton
Using Bundles com.eclipsesource.jaxrs.publisher (184)
我已经创建了文件 etc/org.ops4j.datasource-psql-sandbox.cfg
:
osgi.jdbc.driver.class=org.postgresql.Driver
osgi.jdbc.driver.name=PostgreSQL
url=jdbc:postgresql://localhost:5432/sandbox
dataSourceName=psql-sandbox
user=sandbox
password=sandbox
之后,我在 karaf.log
中看到确认文件已处理:
2017-02-10 14:54:17,468 | INFO | 41-88b277ae0921) |
DataSourceRegistration | 154 - org.ops4j.pax.jdbc.config -
0.9.0 | Detected config for DataSource psql-sandbox. Tracking DSF with filter
(&(objectClass=org.osgi.service.jdbc.DataSourceFactory)(osgi.jdbc.driver.class=org.postgresql.Driver)(osgi.jdbc.driver.name=PostgreSQL))
但是,我在控制台的服务列表中没有看到新的 DataSource
。什么地方出了错?我在日志中没有看到异常....
日志消息告诉您配置已处理,现在正在搜索合适的 DataSourceFactory OSGi 服务。
你的问题是没有找到这样的服务。因此,要对此进行调试,您应该列出所有 DataSourceFactory 服务并检查它们的属性。
service:list DataSourceFactory
在我的例子中它显示了这个:
[org.osgi.service.jdbc.DataSourceFactory]
-----------------------------------------
osgi.jdbc.driver.class = org.postgresql.Driver
osgi.jdbc.driver.name = PostgreSQL JDBC Driver
...
如您所见,它与您在日志中看到的过滤器不匹配。通常,您应该只提供 osgi.jdbc.driver.class 或 osgi.jdbc.driver.name 而不是两者。如果删除 osgi.jdbc.driver.name 行,配置将起作用。
没有错误消息,因为系统不知道错误是否是暂时的。基本上,只要您安装了匹配的 OSGi 服务,就会创建数据源。
在我的 karaf 4.0.8 上,我安装了功能 pax-jdbc-postgresql
。已安装 PostgreSQL 的 DataFactory:
org.osgi.service.jdbc.DataSourceFactory]
osgi.jdbc.driver.class org.postgresql.Driver
osgi.jdbc.driver.name PostgreSQL JDBC Driver
osgi.jdbc.driver.version PostgreSQL 9.4 JDBC4.1 (build 1203)
service.bundleid 204
service.scope singleton
Using Bundles com.eclipsesource.jaxrs.publisher (184)
我已经创建了文件 etc/org.ops4j.datasource-psql-sandbox.cfg
:
osgi.jdbc.driver.class=org.postgresql.Driver
osgi.jdbc.driver.name=PostgreSQL
url=jdbc:postgresql://localhost:5432/sandbox
dataSourceName=psql-sandbox
user=sandbox
password=sandbox
之后,我在 karaf.log
中看到确认文件已处理:
2017-02-10 14:54:17,468 | INFO | 41-88b277ae0921) | DataSourceRegistration | 154 - org.ops4j.pax.jdbc.config - 0.9.0 | Detected config for DataSource psql-sandbox. Tracking DSF with filter (&(objectClass=org.osgi.service.jdbc.DataSourceFactory)(osgi.jdbc.driver.class=org.postgresql.Driver)(osgi.jdbc.driver.name=PostgreSQL))
但是,我在控制台的服务列表中没有看到新的 DataSource
。什么地方出了错?我在日志中没有看到异常....
日志消息告诉您配置已处理,现在正在搜索合适的 DataSourceFactory OSGi 服务。
你的问题是没有找到这样的服务。因此,要对此进行调试,您应该列出所有 DataSourceFactory 服务并检查它们的属性。
service:list DataSourceFactory
在我的例子中它显示了这个:
[org.osgi.service.jdbc.DataSourceFactory]
-----------------------------------------
osgi.jdbc.driver.class = org.postgresql.Driver
osgi.jdbc.driver.name = PostgreSQL JDBC Driver
...
如您所见,它与您在日志中看到的过滤器不匹配。通常,您应该只提供 osgi.jdbc.driver.class 或 osgi.jdbc.driver.name 而不是两者。如果删除 osgi.jdbc.driver.name 行,配置将起作用。
没有错误消息,因为系统不知道错误是否是暂时的。基本上,只要您安装了匹配的 OSGi 服务,就会创建数据源。