Many thank Johan.

Does the rollback works for you ? This is not the case for me.

In a camel transactional route using the Aries JTA Tx Manager, the
message is well moved by ActiveMq to the DLQ but the record is not
rollbacked from the DB and inserted.

I see this message in the log :

17:33:18,181 | ERROR | tenerContainer-1 | xapool
    | 246 - wrap_mvn_com.experlog_xapool_1.5.0 - 0 |
StandardXAPoolDataSource:connectionClosed Exception in
connectionClosed:java.lang.IllegalStateException: Status is
STATUS_ROLLEDBACK

Have you also seen this message ?

Regards,

Charles

On Tue, Apr 12, 2011 at 4:24 PM, Johan Edstrom <[email protected]> wrote:
> Charles, it does look right.
>
> Attaching 2 config files I know work.
>
>
>
>
>
>
>
>
> And the BP bundle that imports it for persistence.
>
>
>
>
> Also is the bundle marked with
>
> Meta-Persistence: META-INF/persistence.xml
>
> In the manifest?
>
>
> On Apr 12, 2011, at 8:20 AM, Charles Moulliard wrote:
>
>> Here is the config Johan
>>
>> ersistence config
>> **********************
>>   <persistence-unit name="reportincident" transaction-type="JTA">
>>
>>       
>> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
>>
>>       
>> <jta-data-source>osgi:service/javax.sql.XADataSource/(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.fusesource.webinars.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>
>>
>>       </persistence-unit>
>> </persistence>
>>
>> On Tue, Apr 12, 2011 at 4:08 PM, Johan Edstrom <[email protected]> wrote:
>>> 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