6.3. 配置 JDBC 数据源
如 OSGi 事务架构 中所述,必须在 OSGi 服务注册表中注册一些服务。正如您可以使用 javax.transaction.UserTransaction 接口(例如 javax.transaction.UserTransaction
接口) 找到 (查找)事务管理器实例一样,您可以使用 javax.sql.DataSource
接口与 JDBC 数据源执行相同的操作。要求是:
- 特定于数据库的数据源,可与目标数据库通信
- 通用数据源,您可以在其中配置池,以及可能进行事务管理(XA)
在 OSGi 环境中,如 Fuse,如果数据源作为 OSGi 服务注册,则可以从应用程序访问。从根本上讲,它按以下方式完成:
org.osgi.framework.BundleContext.registerService(javax.sql.DataSource.class, dataSourceObject, properties); org.osgi.framework.BundleContext.registerService(javax.sql.XADataSource.class, xaDataSourceObject, properties);
注册这些服务的方法有两种:
-
使用
jdbc:ds-create
Karaf console 命令发布数据源。这是 配置方法。 -
使用 Blueprint、SOSOS Declarative Services (SCR)或仅
BundleContext.registerService ()
API 调用等方法发布数据源。这个方法需要一个包含代码和/或元数据的专用 OSGi 捆绑包。这是 the_deployment method_。