【问题标题】:Accessing a datasource from an OSGi bundle从 OSGi 包访问数据源
【发布时间】:2017-06-08 06:43:20
【问题描述】:

我有一个包含部署到 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>

【问题讨论】:

    标签: spring apache-camel osgi apache-servicemix


    【解决方案1】:

    您可以将 DataSource 绑定为 OSGi 服务。在 spring dm 中这是 osgi:reference,在 blueprint 中它将是 reference。

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

    【讨论】:

    • 你能给我一个如何注入数据源的例子吗?我无法解析我的应用程序包中的数据源。
    【解决方案2】:

    使用 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>
    

    【讨论】:

      猜你喜欢
      • 2012-07-22
      • 2010-09-30
      • 2011-04-01
      • 2014-04-27
      • 1970-01-01
      • 1970-01-01
      • 2012-04-03
      • 1970-01-01
      • 2015-05-04
      相关资源
      最近更新 更多