从 OSGi 包访问数据源
Accessing a datasource from an OSGi bundle
我有一个包含部署到 Apache ServiceMix 的数据源的蓝图文件。我能够从 Apache Karaf 控制台查询数据源。如何从 Camel Spring-DM 捆绑应用程序访问此数据源?这是我的蓝图文件:
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource">
<property name="URL" value="URL"/>
<property name="user" value="USER"/>
<property name="password" value="PASSWORD"/>
</bean>
<service interface="javax.sql.DataSource" ref="dataSource" id="ds">
<service-properties>
<entry key="osgi.jndi.service.name" value="jdbc/ds"/>
</service-properties>
</service>
</blueprint>
您可以将 DataSource 绑定为 OSGi 服务。在 spring dm 中这是 osgi:reference,在蓝图中它将是参考。
<reference id="dataSource" interface="javax.sql.DataSource"/>
然后您可以将数据源注入到 SqlComponent 中。
例如,查看我为 this camel route 所做的修复。这是蓝图,但 spring dm.
几乎相同
<bean id="sql" class="org.apache.camel.component.sql.SqlComponent">
<property name="dataSource" ref="dataSource"/>
</bean>
使用 Hibernate 作为 JPA 提供:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
<persistence-unit name="jpa" transaction-type="JTA">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<jta-data-source>osgi:service/jdbc/ds</jta-data-source>
...
</persistence-unit>
</persistence>
我有一个包含部署到 Apache ServiceMix 的数据源的蓝图文件。我能够从 Apache Karaf 控制台查询数据源。如何从 Camel Spring-DM 捆绑应用程序访问此数据源?这是我的蓝图文件:
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource">
<property name="URL" value="URL"/>
<property name="user" value="USER"/>
<property name="password" value="PASSWORD"/>
</bean>
<service interface="javax.sql.DataSource" ref="dataSource" id="ds">
<service-properties>
<entry key="osgi.jndi.service.name" value="jdbc/ds"/>
</service-properties>
</service>
</blueprint>
您可以将 DataSource 绑定为 OSGi 服务。在 spring dm 中这是 osgi:reference,在蓝图中它将是参考。
<reference id="dataSource" interface="javax.sql.DataSource"/>
然后您可以将数据源注入到 SqlComponent 中。
例如,查看我为 this camel route 所做的修复。这是蓝图,但 spring dm.
几乎相同<bean id="sql" class="org.apache.camel.component.sql.SqlComponent">
<property name="dataSource" ref="dataSource"/>
</bean>
使用 Hibernate 作为 JPA 提供:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
<persistence-unit name="jpa" transaction-type="JTA">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<jta-data-source>osgi:service/jdbc/ds</jta-data-source>
...
</persistence-unit>
</persistence>