我有一个蓝图文件,其中包含部署到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>
答案 0 :(得分:1)
您可以将DataSource绑定为OSGi服务。在春天dm这是osgi:参考,在蓝图中它将是参考。
<reference id="dataSource" interface="javax.sql.DataSource"/>
然后,您可以将DataSource注入SqlComponent。
作为示例,请参阅我为this camel route所做的修复。这是蓝图,但对于spring dm来说几乎是一样的。
<bean id="sql" class="org.apache.camel.component.sql.SqlComponent">
<property name="dataSource" ref="dataSource"/>
</bean>
答案 1 :(得分:1)
使用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>