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_。