Here is the complete blueprint file to expose the datasource

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
           
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0";>

    <cm:property-placeholder persistent-id="database" id="database">
        <cm:default-properties>

            <!-- JDBC Drivers -->
            <cm:property name="jdbc.driverClassName"
value="org.hsqldb.jdbcDriver"/>
            <cm:property name="jdbc.url"
value="jdbc:hsqldb:hsql://localhost/reportdb"/>
            <cm:property name="jdbc.username" value="sa"/>
            <cm:property name="jdbc.password" value=""/>

            <!-- Connection Pooling DBCP -->
            <cm:property name="jdbc.initialSize" value="5"/>
            <cm:property name="jdbc.maxActive" value="10"/>
            <cm:property name="jdbc.maxIdle" value="10"/>
            <cm:property name="jdbc.defaultAutoCommit" value="false"/>
            <cm:property name="jdbc.removeAbandoned" value="false"/>
            <cm:property name="jdbc.removeAbandonedTimeout" value="300"/>
            <cm:property name="jdbc.logAbandoned" value="false"/>

        </cm:default-properties>
    </cm:property-placeholder>

    <service auto-export="interfaces" ref="jta">
        <service-properties>
            <entry key="transactional" value="true"/>
        </service-properties>
    </service>

    <service auto-export="interfaces" ref="nonJTA">
        <service-properties>
            <entry key="transactional" value="false"/>
        </service-properties>
    </service>

    <!-- ###### JDBC Data Source ###### -->
    <bean id="jta" class="org.enhydra.jdbc.standard.StandardXADataSource">
        <property name="driverName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <bean class="org.apache.commons.dbcp.BasicDataSource" id="nonJTA">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="initialSize" value="${jdbc.initialSize}"/>
        <property name="maxActive" value="${jdbc.maxActive}"/>
        <property name="maxIdle" value="${jdbc.maxIdle}"/>
        <property name="defaultAutoCommit" value="false"/>
        <property name="removeAbandoned" value="${jdbc.removeAbandoned}"/>
        <property name="removeAbandonedTimeout"
value="${jdbc.removeAbandonedTimeout}"/>
        <property name="logAbandoned" value="${jdbc.logAbandoned}"/>
    </bean>

</blueprint>

Regards,

Charles


On Tue, Apr 12, 2011 at 2:37 PM, Ioannis Canellos <[email protected]> wrote:
> Halo Charles,
>
> I think that you didn't paste the actual data source.
>
>
> On Tue, Apr 12, 2011 at 3:20 PM, Charles Moulliard 
> <[email protected]>wrote:
>
>> Hi,
>>
>> I have configured OpenJPA to use a JTA/XA Datasource on ServiceMix but
>> when I try to insert data in the DB, openJPA generates the following
>> error :
>>
>> Caused by: java.lang.RuntimeException: There were errors initializing
>> your configuration: <openjpa-2.1.0-r422266:1071316 fatal user error>
>> org.apache.openjpa.util.UserException: A JDBC Driver or DataSource
>> class name must be specified in the ConnectionDriverName property.
>>        at
>> org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:76)
>>        at
>> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:844)
>>        at
>> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getConnectionFactory(JDBCConfigurationImpl.java:732)
>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>        at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>        at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>        at java.lang.reflect.Method.invoke(Method.java:597)
>>        at
>> org.apache.openjpa.lib.conf.ConfigurationImpl.instantiateAll(ConfigurationImpl.java:295)
>>
>>
>> The property
>> <jta-data-source>osgi:service/javax.sql.DataSource/(transactional=true)</jta-datasource>
>>  in the persistence.xml file point to the XADataSource exposed as an
>> osgi service
>>
>> Persistence
>> **************
>> <persistence-unit name="reportincident" transaction-type="JTA">
>>
>>
>>  <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
>>
>>
>>  <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
>>
>>
>>  <jta-data-source>osgi:service/javax.sql.DataSource/(transactional=true)</jta-data-source>
>>        <!-- Required by openJPA to update sequence table outside of
>> Global Tx Management -->
>>
>>  <non-jta-data-source>osgi:service/javax.sql.DataSource/(transactional=false)</non-jta-data-source>
>>
>>        <class>com.mycompany.persistence.model.Incident</class>
>>
>>        <exclude-unlisted-classes>true</exclude-unlisted-classes>
>>
>>        <!-- openjpa & HSQLDB -->
>>        <properties>
>>            <property name="openjpa.jdbc.SynchronizeMappings"
>>
>> value="buildSchema(SchemaAction='add,deleteTableContents')"/>
>>            <property name="openjpa.Log"
>>                      value="commons"/>
>>            <property name="openjpa.jdbc.DBDictionary"
>>                      value="hsql(useSchemaName=true)"/>
>>            <property name="openjpa.jdbc.Schema"
>>                      value="PUBLIC"/>
>>            <property name="openjpa.TransactionMode"
>>                      value="managed"/>
>>            <property name="openjpa.ManagedRuntime"
>>
>>
>> value="jndi(TransactionManagerName=aries:services/javax.transaction.TransactionManager)"/>
>>            <property name="openjpa.Multithreaded"
>>                      value="true"/>
>>            <property name="openjpa.TransactionMode"
>>                      value="managed"/>
>>            <!--<property name="openjpa.ConnectionFactoryMode"
>>                      value="managed"/>-->
>>        </properties>
>>
>>
>>
>> Blueprint config of the DataSource
>> ****************************************
>>    <service auto-export="interfaces" ref="jta">
>>        <service-properties>
>>            <entry key="transactional" value="true"/>
>>        </service-properties>
>>    </service>
>>
>>    <service auto-export="interfaces" ref="jta">
>>        <service-properties>
>>            <entry key="transactional" value="true"/>
>>        </service-properties>
>>    </service>
>>
>> Any idea is welcome.
>>
>>
>> Regards,
>>
>> Charles Moulliard
>>
>> Sr. Principal Solution Architect - FuseSource
>> Apache Committer
>>
>> Blog : http://cmoulliard.blogspot.com
>> Twitter : http://twitter.com/cmoulliard
>> Linkedin : http://www.linkedin.com/in/charlesmoulliard
>> Skype: cmoulliard
>>
>
>
>
> --
> *Ioannis Canellos*
> *
>  http://iocanel.blogspot.com
>
> Apache Karaf <http://karaf.apache.org/> Committer & PMC
> Apache ServiceMix <http://servicemix.apache.org/>  Committer
> *
>

Reply via email to