2017-01-23 2 views
1

Ich habe eine Blueprint-Datei mit einer Datenquelle, die auf Apache ServiceMix bereitgestellt wird. Ich konnte die Datenquelle von der Apache Karaf Konsole abfragen. Wie kann ich über eine Camel Spring-DM-Paketanwendung auf diese Datenquelle zugreifen? Dies ist meine Blueprint-Datei:Zugriff auf eine Datenquelle aus einem OSGi-Bundle

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

Antwort

1

Sie können die DataSource als OSGi-Dienst binden. Im Frühjahr dm ist dies osgi: Referenz, in Blueprint wäre es Referenz.

<reference id="dataSource" interface="javax.sql.DataSource"/> 

Sie können dann die DataSource zum Beispiel in die SqlComponent injizieren.

Als Beispiel sehen Sie eine Lösung, die ich für this camel route getan habe. Das ist Blaupause, aber es ist fast dasselbe für Frühling dm.

<bean id="sql" class="org.apache.camel.component.sql.SqlComponent"> 
    <property name="dataSource" ref="dataSource"/> 
</bean> 
+0

Könnten Sie mir geben ein Beispiel dafür, wie die Datasource zu injizieren. Ich kann die DataSource in meinem Anwendungspaket nicht auflösen. – user6641655

1

unter Ruhe als JPA bieten:

<?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> 
Verwandte Themen