No, but that looks like you close the connection before the rollback? If you turn on TRACING in openjpa as well as looking at the hsqldb.log it should show you where it is going wonky...
I also use </transacted> in my camel routes but primarily have my daos used in processors, i.e they will not even be used if something fails. /je On Apr 12, 2011, at 9:40 AM, Charles Moulliard wrote: > 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 >>>> >>>> >> >> >>
