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

Reply via email to