The problem occurs when running a camel route using transaction demarcation on it giving a javax.persistence.TransactionRequiredException: no transaction is in progress.
Persistence unit
<persistence-unit name="pydio2xbound_mssql_persistence_unit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<non-jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=pydio2xbound-mssql)</non-jta-data-source>
<class>de.hmm.medit.esb.xbound.pydio2xbound.some.classes</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServer2008Dialect"/>
<property name="hibernate.ejb.entitymanager_factory_name" value="mssql"/>
<property name="hibernate.connection.release_mode" value="auto"/>
<property name="hibernate.connection.autocommit" value="false" />
<property name="hibernate.showsql" value="false"/>
</properties>
</persistence-unit>
DAO context:
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jpa="http://aries.apache.org/xmlns/jpa/v2.0.0"
xmlns:tx="http://aries.apache.org/xmlns/transactions/v2.0.0"
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
http://aries.apache.org/xmlns/jpa/v2.0.0 http://aries.apache.org/schemas/jpa/jpa_200.xsd">
<jpa:enable/>
<tx:enable/>
<bean id="daoService" class="de.hmm.medit.esb.xbound.pydio2xbound.persistence.dao.impl.WellspectDao"/>
<service ref="daoService" interface="de.hmm.medit.esb.xbound.pydio2xbound.persistence.dao.spi.WellspectDaoService"/>
</blueprint>
DAO service:
public class Dao implements DaoService {
@PersistenceContext(unitName = UNIT_NAME_MSSQL)
EntityManager entityManagerMSSQL;
@Transactional(Transactional.TxType.REQUIRED)
@Override
public void persist(AuftragsDatei auftragsDatei) {
entityManagerMSSQL.persist(auftragsDatei);
...etc...
OPS4J Persistence config file:
dataSourceName=pydio2xbound-mssql
databaseName=pydio2xbound
osgi.jdbc.driver.name=mssql-pool
url=jdbc:sqlserver://127.0.0.1:1433
user=root
password=************
jdbc.pool.maxTotal=4
#jdbc.factory.defaultAutoCommit=false
Karaf list datasource:
^karaf@root>service:list DataSource
[javax.sql.DataSource]
----------------------
databaseName = pydio2xbound
dataSourceName = pydio2xbound-mssql
felix.fileinstall.filename = file:/E:/Development/karaf/medit-esb-1.3.1-SNAPSHOT/etc/org.ops4j.datasource-xbound.pydio2xbound.mssql.persistence.cfg
jdbc.pool.maxTotal = 4
osgi.jdbc.driver.name = mssql-pool
osgi.jndi.service.name = pydio2xbound-mssql
password = *********
service.bundleid = 252
service.factoryPid = org.ops4j.datasource
service.id = 271
service.pid = org.ops4j.datasource.0025c61e-c8d5-451f-91e5-f1258d806ce5
service.scope = singleton
url = jdbc:sqlserver://127.0.0.1:1433
user = root
Provided by :
OPS4J Pax JDBC Config (252)
Used by:
Apache Aries JPA container (236)
Spring / Camel context:
<reference id="mssqlDatasource" interface="javax.sql.DataSource" filter="(&(objectClass=javax.sql.DataSource)(dataSourceName=pydio2xbound-mssql))" availability="mandatory"/>
<reference id="daoService" interface="de.hmm.medit.esb.xbound.pydio2xbound.persistence.dao.spi.DaoService"/>
<bean id="dbTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="mssqlDatasource"/>
</bean>
<bean id="dbPropagationRequired" class="org.apache.camel.spring.spi.SpringTransactionPolicy">
<property name="transactionManager" ref="dbTransactionManager"/>
<property name="propagationBehaviorName" value="PROPAGATION_REQUIRED"/>
</bean>
<camelContext id="xbound-service-pydio2xbound-aggregation" xmlns="http://camel.apache.org/schema/blueprint">
<route id="idempotent-data-persistence">
<from uri="direct:process-data"/>
<transacted ref="dbPropagationRequired"/>
<setHeader headerName="CamelHttpMethod">
<constant>GET</constant>
</setHeader>
<enrich strategyRef="dataAggregationStrategy">
<simple>cxfrs:bean:dynamicClient?address=${in.header.CamelHttpUri}</simple>
</enrich>
<process ref="csvParserProcessor"/>
<setHeader headerName="body">
<simple>${body}</simple>
</setHeader>
<setBody>
<simple>${body.auftragsDatei}</simple>
</setBody>
<bean ref="wellspectDaoService" method="persistDetectingDuplicatesMSSQL"/>
<...some more routing...>
</route>
Complete stacktrace:
2017-08-23 16:43:00,070 | DEBUG | 4 - timer://rest | aggregation | 48 - org.apache.camel.camel-core - 2.16.5 | Processing file : https://transfer.zhp-online.de/pydio/api/v2/io/my-files/excel/Auftrags%2520daten_20170504-8.csv
2017-08-23 16:43:00,070 | DEBUG | 4 - timer://rest | DataSourceTransactionManager | 157 - org.apache.servicemix.bundles.spring-tx - 3.2.17.RELEASE_1 | Creating new transaction with name [null]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT
2017-08-23 16:43:00,070 | DEBUG | 4 - timer://rest | DataSourceTransactionManager | 157 - org.apache.servicemix.bundles.spring-tx - 3.2.17.RELEASE_1 | Acquired Connection [1735559577, URL=jdbc:sqlserver://127.0.0.1:1433;authenticationScheme=nativeAuthentication;xopenStates=false;sendTimeAsDatetime=true;trustServerCertificate=false;sendStringParametersAsUnicode=true;selectMethod=direct;responseBuffering=adaptive;packetSize=8000;multiSubnetFailover=false;loginTimeout=15;lockTimeout=-1;lastUpdateCount=true;encrypt=false;disableStatementPooling=true;databaseName=pydio2xbound;applicationName=Microsoft JDBC Driver for SQL Server;applicationIntent=readwrite;, UserName=root, Microsoft JDBC Driver 4.1 for SQL Server] for JDBC transaction
2017-08-23 16:43:00,070 | DEBUG | 4 - timer://rest | DataSourceTransactionManager | 157 - org.apache.servicemix.bundles.spring-tx - 3.2.17.RELEASE_1 | Switching JDBC Connection [1735559577, URL=jdbc:sqlserver://127.0.0.1:1433;authenticationScheme=nativeAuthentication;xopenStates=false;sendTimeAsDatetime=true;trustServerCertificate=false;sendStringParametersAsUnicode=true;selectMethod=direct;responseBuffering=adaptive;packetSize=8000;multiSubnetFailover=false;loginTimeout=15;lockTimeout=-1;lastUpdateCount=true;encrypt=false;disableStatementPooling=true;databaseName=pydio2xbound;applicationName=Microsoft JDBC Driver for SQL Server;applicationIntent=readwrite;, UserName=root, Microsoft JDBC Driver 4.1 for SQL Server] to manual commit
2017-08-23 16:43:00,070 | DEBUG | 4 - timer://rest | aggregation | 48 - org.apache.camel.camel-core - 2.16.5 | Persisting https://transfer.zhp-online.de/pydio/api/v2/io/my-files/excel/Auftrags%2520daten_20170504-8.csv
2017-08-23 16:43:00,354 | DEBUG | 4 - timer://rest | TikaProcessor | 437 - de.hmm.medit.esb.tika.service - 1.3.1.SNAPSHOT | Metadata of the document:
2017-08-23 16:43:00,354 | DEBUG | 4 - timer://rest | TikaProcessor | 437 - de.hmm.medit.esb.tika.service - 1.3.1.SNAPSHOT | Content-Encoding : windows-1252
2017-08-23 16:43:00,354 | DEBUG | 4 - timer://rest | TikaProcessor | 437 - de.hmm.medit.esb.tika.service - 1.3.1.SNAPSHOT | resourceName : Auftrags daten_20170504-8.csv
2017-08-23 16:43:00,354 | DEBUG | 4 - timer://rest | TikaProcessor | 437 - de.hmm.medit.esb.tika.service - 1.3.1.SNAPSHOT | Content-Type : text/csv; charset=windows-1252
2017-08-23 16:43:00,386 | DEBUG | 4 - timer://rest | CSVParserProcessor | 621 - de.hmm.medit.esb.xbound.pydio2xbound.aggregation - 1.3.1.SNAPSHOT | Parsed CSV entries: 107
2017-08-23 16:43:00,402 | ERROR | 4 - timer://rest | DefaultErrorHandler | 48 - org.apache.camel.camel-core - 2.16.5 | Failed delivery for (MessageId: ID-LH00127-56851-1503499248618-1-14 on ExchangeId: ID-LH00127-56851-1503499248618-1-13). Exhausted after delivery attempt: 1 caught: javax.persistence.TransactionRequiredException: no transaction is in progress
Message History
---------------------------------------------------------------------------------------------------------------------------------------
RouteId ProcessorId Processor Elapsed (ms)
[aggregation-rest-c] [aggregation-rest-c] [timer://rest?fixedRate=true&repeatCount=1 ] [ 548]
[aggregation-rest-c] [filter3 ] [filter[simple{${body.mimeString} == 'text/csv' or ${body.mimeString} == 'appli] [ 332]
[aggregation-rest-c] [bean8 ] [bean[ref:uriBuilder method: setFileURIv2] ] [ 0]
[aggregation-rest-c] [log14 ] [log ] [ 0]
[aggregation-rest-c] [to11 ] [direct:process-data ] [ 332]
[idempotent-data-pe] [transacted3 ] [transacted[ref:dbPropagationRequired] ] [ 332]
[idempotent-data-pe] [log16 ] [log ] [ 0]
[idempotent-data-pe] [setHeader16 ] [setHeader[CamelHttpMethod] ] [ 0]
[idempotent-data-pe] [enrich3 ] [enrich[simple{cxfrs:bean:dynamicClient?address=${in.header.CamelHttpUri}}] ] [ 153]
[idempotent-data-pe] [process3 ] [ref:csvParserProcessor ] [ 163]
[idempotent-data-pe] [setHeader17 ] [setHeader[body] ] [ 0]
[idempotent-data-pe] [setBody5 ] [setBody[simple{${body.auftragsDatei}}] ] [ 0]
[idempotent-data-pe] [bean10 ] [bean[ref:daoService method: persist] ] [ 16]
Exchange
---------------------------------------------------------------------------------------------------------------------------------------
Exchange[
Id ID-LH00127-56851-1503499248618-1-13
ExchangePattern InOnly
Headers {Accept-Ranges=0-211690, body=de.hmm.medit.esb.xbound.pydio2xbound.aggregation.internal.model.PydioContent@6c23ef27, breadcrumbId=ID-LH00127-56851-1503499248618-1-1, Cache-Control=no-cache, must-revalidate, CamelHttpMethod=GET, CamelHttpResponseCode=200, CamelHttpUri=https://transfer.zhp-online.de/pydio/api/v2/io/my-files/excel/Auftrags%2520daten_20170504-8.csv, CamelRedelivered=false, CamelRedeliveryCounter=0, connection=close, Content-Disposition=attachment; filename="Auftrags daten_20170504-8.csv", Content-Length=211690, Content-Range=bytes 0-211689/211690;, content-transfer-encoding=binary, content-type=application/force-download; name="Auftrags daten_20170504-8.csv", Date=Wed, 23 Aug 2017 14:43:00 GMT, Expires=0, firedTime=Wed Aug 23 16:42:59 CEST 2017, Pragma=no-cache, Server=Apache/2.4.18 (Red Hat) PHP/5.6.25, X-Powered-By=PHP/5.6.25}
BodyType de.hmm.medit.esb.xbound.pydio2xbound.persistence.entities.AuftragsDatei
Body de.hmm.medit.esb.xbound.pydio2xbound.persistence.entities.AuftragsDatei@16cf6715
]
Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------
javax.persistence.TransactionRequiredException: no transaction is in progress
at org.hibernate.jpa.spi.AbstractQueryImpl.checkTransaction(AbstractQueryImpl.java:222)
at org.hibernate.jpa.internal.QueryImpl.getSingleResult(QueryImpl.java:492)
at de.hmm.medit.esb.xbound.pydio2xbound.persistence.dao.impl.Dao.persistDetectingDuplicatesMSSQL(Dao.java:42)
at Proxyac81bcf6_79cf_4580_afb2_4af8d3f3666c.persistDetectingDuplicatesMSSQL(Unknown Source)
at Proxy33315017_2dda_4860_80a6_a01c145301b5.persistDetectingDuplicatesMSSQL(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_121]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_121]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_121]
at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_121]
at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:408)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:279)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:252)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:177)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:337)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.DefaultErrorHandler.process(DefaultErrorHandler.java:59)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:171)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:218)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:99)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:112)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:218)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler$1.doInTransactionWithoutResult(TransactionErrorHandler.java:181)[52:org.apache.camel.camel-spring:2.16.5]
at org.springframework.transaction.support.TransactionCallbackWithoutResult.doInTransaction(TransactionCallbackWithoutResult.java:33)[157:org.apache.servicemix.bundles.spring-tx:3.2.17.RELEASE_1]
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:131)[157:org.apache.servicemix.bundles.spring-tx:3.2.17.RELEASE_1]
at org.apache.camel.spring.spi.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:174)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:134)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:103)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:112)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.FilterProcessor.process(FilterProcessor.java:57)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:677)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:605)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:237)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.Splitter.process(Splitter.java:104)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:165)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:73)[48:org.apache.camel.camel-core:2.16.5]
at java.util.TimerThread.mainLoop(Timer.java:555)[:1.8.0_121]
at java.util.TimerThread.run(Timer.java:505)[:1.8.0_121]
2017-08-23 16:43:00,404 | DEBUG | 4 - timer://rest | TransactionTemplate | 157 - org.apache.servicemix.bundles.spring-tx - 3.2.17.RELEASE_1 | Initiating transaction rollback on application exception
org.apache.camel.RuntimeCamelException: javax.persistence.TransactionRequiredException: no transaction is in progress
at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1652)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler$1.doInTransactionWithoutResult(TransactionErrorHandler.java:188)[52:org.apache.camel.camel-spring:2.16.5]
at org.springframework.transaction.support.TransactionCallbackWithoutResult.doInTransaction(TransactionCallbackWithoutResult.java:33)[157:org.apache.servicemix.bundles.spring-tx:3.2.17.RELEASE_1]
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:131)[157:org.apache.servicemix.bundles.spring-tx:3.2.17.RELEASE_1]
at org.apache.camel.spring.spi.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:174)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:134)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:103)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:112)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.FilterProcessor.process(FilterProcessor.java:57)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:677)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:605)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:237)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.Splitter.process(Splitter.java:104)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:165)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:73)[48:org.apache.camel.camel-core:2.16.5]
at java.util.TimerThread.mainLoop(Timer.java:555)[:1.8.0_121]
at java.util.TimerThread.run(Timer.java:505)[:1.8.0_121]
Caused by: javax.persistence.TransactionRequiredException: no transaction is in progress
at org.hibernate.jpa.spi.AbstractQueryImpl.checkTransaction(AbstractQueryImpl.java:222)
at org.hibernate.jpa.internal.QueryImpl.getSingleResult(QueryImpl.java:492)
at de.hmm.medit.esb.xbound.pydio2xbound.persistence.dao.impl.Dao.persistDetectingDuplicatesMSSQL(Dao.java:42)
at Proxyac81bcf6_79cf_4580_afb2_4af8d3f3666c.persistDetectingDuplicatesMSSQL(Unknown Source)
at Proxy33315017_2dda_4860_80a6_a01c145301b5.persistDetectingDuplicatesMSSQL(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_121]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_121]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_121]
at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_121]
at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:408)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:279)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:252)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:177)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:337)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.DefaultErrorHandler.process(DefaultErrorHandler.java:59)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:171)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:218)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:99)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:112)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:218)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler$1.doInTransactionWithoutResult(TransactionErrorHandler.java:181)[52:org.apache.camel.camel-spring:2.16.5]
... 35 more
2017-08-23 16:43:00,406 | DEBUG | 4 - timer://rest | DataSourceTransactionManager | 157 - org.apache.servicemix.bundles.spring-tx - 3.2.17.RELEASE_1 | Initiating transaction rollback
2017-08-23 16:43:00,407 | DEBUG | 4 - timer://rest | DataSourceTransactionManager | 157 - org.apache.servicemix.bundles.spring-tx - 3.2.17.RELEASE_1 | Rolling back JDBC transaction on Connection [1735559577, URL=jdbc:sqlserver://127.0.0.1:1433;authenticationScheme=nativeAuthentication;xopenStates=false;sendTimeAsDatetime=true;trustServerCertificate=false;sendStringParametersAsUnicode=true;selectMethod=direct;responseBuffering=adaptive;packetSize=8000;multiSubnetFailover=false;loginTimeout=15;lockTimeout=-1;lastUpdateCount=true;encrypt=false;disableStatementPooling=true;databaseName=pydio2xbound;applicationName=Microsoft JDBC Driver for SQL Server;applicationIntent=readwrite;, UserName=root, Microsoft JDBC Driver 4.1 for SQL Server]
2017-08-23 16:43:00,408 | DEBUG | 4 - timer://rest | DataSourceTransactionManager | 157 - org.apache.servicemix.bundles.spring-tx - 3.2.17.RELEASE_1 | Releasing JDBC Connection [1735559577, URL=jdbc:sqlserver://127.0.0.1:1433;authenticationScheme=nativeAuthentication;xopenStates=false;sendTimeAsDatetime=true;trustServerCertificate=false;sendStringParametersAsUnicode=true;selectMethod=direct;responseBuffering=adaptive;packetSize=8000;multiSubnetFailover=false;loginTimeout=15;lockTimeout=-1;lastUpdateCount=true;encrypt=false;disableStatementPooling=true;databaseName=pydio2xbound;applicationName=Microsoft JDBC Driver for SQL Server;applicationIntent=readwrite;, UserName=root, Microsoft JDBC Driver 4.1 for SQL Server] after transaction
2017-08-23 16:43:00,408 | DEBUG | 4 - timer://rest | DataSourceUtils | 552 - org.apache.servicemix.bundles.spring-jdbc - 3.2.17.RELEASE_1 | Returning JDBC Connection to DataSource
2017-08-23 16:43:00,408 | WARN | 4 - timer://rest | TransactionErrorHandler | 48 - org.apache.camel.camel-core - 2.16.5 | Transaction rollback (0x6fa0c2c8) redelivered(unknown) for (MessageId: ID-LH00127-56851-1503499248618-1-12 on ExchangeId: ID-LH00127-56851-1503499248618-1-13) caught: javax.persistence.TransactionRequiredException: no transaction is in progress
2017-08-23 16:43:00,408 | WARN | 4 - timer://rest | TimerConsumer | 48 - org.apache.camel.camel-core - 2.16.5 | Error processing exchange. Exchange[ID-LH00127-56851-1503499248618-1-2][Message: de.hmm.medit.esb.pydio.api.TreeNodeSaxHandler@467c1a52]. Caused by: [org.apache.camel.RuntimeCamelException - javax.persistence.TransactionRequiredException: no transaction is in progress]
org.apache.camel.RuntimeCamelException: javax.persistence.TransactionRequiredException: no transaction is in progress
at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1652)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler$1.doInTransactionWithoutResult(TransactionErrorHandler.java:188)[52:org.apache.camel.camel-spring:2.16.5]
at org.springframework.transaction.support.TransactionCallbackWithoutResult.doInTransaction(TransactionCallbackWithoutResult.java:33)[157:org.apache.servicemix.bundles.spring-tx:3.2.17.RELEASE_1]
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:131)[157:org.apache.servicemix.bundles.spring-tx:3.2.17.RELEASE_1]
at org.apache.camel.spring.spi.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:174)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:134)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:103)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:112)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.FilterProcessor.process(FilterProcessor.java:57)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:677)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:605)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:237)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.Splitter.process(Splitter.java:104)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:165)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:73)[48:org.apache.camel.camel-core:2.16.5]
at java.util.TimerThread.mainLoop(Timer.java:555)[:1.8.0_121]
at java.util.TimerThread.run(Timer.java:505)[:1.8.0_121]
Caused by: javax.persistence.TransactionRequiredException: no transaction is in progress
at org.hibernate.jpa.spi.AbstractQueryImpl.checkTransaction(AbstractQueryImpl.java:222)
at org.hibernate.jpa.internal.QueryImpl.getSingleResult(QueryImpl.java:492)
at de.hmm.medit.esb.xbound.pydio2xbound.persistence.dao.impl.Dao.persistDetectingDuplicatesMSSQL(Dao.java:42)
at Proxyac81bcf6_79cf_4580_afb2_4af8d3f3666c.persistDetectingDuplicatesMSSQL(Unknown Source)
at Proxy33315017_2dda_4860_80a6_a01c145301b5.persistDetectingDuplicatesMSSQL(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_121]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_121]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_121]
at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_121]
at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:408)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:279)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:252)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:177)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:337)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.DefaultErrorHandler.process(DefaultErrorHandler.java:59)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:171)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:218)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:99)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:112)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[48:org.apache.camel.camel-core:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:218)[52:org.apache.camel.camel-spring:2.16.5]
at org.apache.camel.spring.spi.TransactionErrorHandler$1.doInTransactionWithoutResult(TransactionErrorHandler.java:181)[52:org.apache.camel.camel-spring:2.16.5]
A transaction is being set up, ut by the time it reaches my DAO there is no TX in progress. I guess i am using the wrong Spring JTA transaction manager?
<reference id="hibernateEntityManagerFactory" interface="javax.persistence.EntityManagerFactory" filter="(osgi.unit.name=pydio2xbound_mssql_persistence_unit)" availability="mandatory"/>
<reference id="wellspectDaoService" interface="de.hmm.medit.esb.xbound.pydio2xbound.wellspect.persistence.dao.spi.WellspectDaoService"/>
<bean id="jpaTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="hibernateEntityManagerFactory"/>
</bean>
<bean id="jpaPropagationRequired" class="org.apache.camel.spring.spi.SpringTransactionPolicy">
<property name="transactionManager" ref="jpaTransactionManager"/>
<property name="propagationBehaviorName" value="PROPAGATION_REQUIRED"/>
</bean>
<bean id="daoProcessor" class="de.hmm.medit.esb.xbound.pydio2xbound.wellspect.aggregation.camel.impl.DaoProcessor">
<property name="entityManagerFactory" ref="hibernateEntityManagerFactory"/>
<property name="wellspectDaoService" ref="wellspectDaoService"/>
</bean>
@Override
public void persistDetectingDuplicatesMSSQL(WellspectAuftragsDatei wellspectAuftragsDatei, EntityManager entityManager) {
entityManager.persist(wellspectAuftragsDatei);
etc...
EntityManager entityManager = EntityManagerFactoryUtils.getTransactionalEntityManager(entityManagerFactory);