What does your persistence look like?
You'll need something like 

<persistence xmlns="http://java.sun.com/xml/ns/persistence";
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd";
             version="2.0">

  <persistence-unit name="mymagical-jpa-unit" transaction-type="JTA">
    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
    <jta-data-source>blueprint:comp/jta</jta-data-source>
    
<non-jta-data-source>osgi:service/javax.sql.DataSource/(transactional=false)</non-jta-data-source>
        <!-- Entity classes here -->    

    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <validation-mode>NONE</validation-mode>

    <properties>
      <property name="openjpa.Multithreaded" value="true"/>
      <property name="openjpa.TransactionMode" value="managed"/>
      <property name="openjpa.ConnectionFactoryMode" value="managed"/>
      <property name="openjpa.jdbc.MappingDefaults" 
value="ForeignKeyDeleteAction=restrict, JoinForeignKeyDeleteAction=restrict"/>
      <property name="openjpa.LockManager" 
value="pessimistic(VersionCheckOnReadLock=true,VersionUpdateOnWriteLock=true)"/>
      <property name="openjpa.Log" value="DefaultLevel=INFO, Runtime=INFO, 
Tool=INFO, SQL=INFO"/>
    </properties>
  </persistence-unit>

</persistence>
On Apr 12, 2011, at 7:43 AM, Guillaume Nodet wrote:

> Looking at the stack trace, the problem seems to be in the JPA
> definition, as it does not hit the datasource.
> Can you list the services exported by the datasource bundle ?
> Also, do you have aries jndi installed ? As your config uses it to
> lookup the osgi service.
> 
> On Tue, Apr 12, 2011 at 14:47, Charles Moulliard <[email protected]> wrote:
>> 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
>>> *
>>> 
>> 
> 
> 
> 
> -- 
> Cheers,
> Guillaume Nodet
> ------------------------
> Blog: http://gnodet.blogspot.com/
> ------------------------
> Open Source SOA
> http://fusesource.com

Reply via email to