Hi, I am trying to do a small poc with camel-hibernate component. First my versions are : Camel-core 2.9.0 Camel-hibernate 2.10.0 Spring - 3.0.6 Hibernate - 3.6.0
Below is my route : from("direct:foo") .process(new Processor() { @Override public void process(Exchange arg0) throws Exception { Queue q = new Queue(); q.setName("hi"); arg0.getIn().setBody(q); } }) .to("hibernate:com.poc.camel.interesting.Queue"); from("direct:services") .errorHandler(deadLetterChannel("direct:foo").useOriginalMessage()).end().to("http://somewebserver") This is my configuration xml <camelContext id="customCamelContext" xmlns="http://camel.apache.org/schema/spring" trace="true" streamCache="true"> <propertyPlaceholder id="camelProperties" location="classpath:camel.properties" /> <camel:routeBuilder ref="customRouteBuilder" /> </camelContext> <camel:proxy id="appService" serviceInterface="com.poc.camel.interesting.ApiServices" serviceUrl="direct:services" camelContextId="tmeCamelContext" /> <bean id="hibernate" class="org.apacheextras.camel.component.hibernate.HibernateComponent"> <property name="sessionFactory" ref="sessionFactory"/> <property name="transactionStrategy" ref="springTransactionStrategy"/> </bean> <bean id="springTransactionStrategy" class="org.apacheextras.camel.component.hibernate.SpringTransactionStrategy"> <constructor-arg ref="sessionFactory"/> <constructor-arg ref="transactionTemplate"/> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate"> <property name="transactionManager" ref="transactionManager"/> </bean> Now the flow is : I make a HTTP request to some webservice and when it fails it goes to deadletter error handler which is pointed to direct:foo endpoint. This then persists a Queue object in DB using camel-hibernate component. Now i get following exception by doing all of this: [2013-08-16 14:55:10,993] org.apache.commons.httpclient.HttpMethodDirector INFO - Retrying request [2013-08-16 14:55:10,993] org.apache.commons.httpclient.HttpConnection DEBUG - Open connection to 10.152.160.18:8065 [2013-08-16 14:55:11,994] org.apache.commons.httpclient.HttpMethodDirector DEBUG - Closing the connection. [2013-08-16 14:55:11,994] org.apache.commons.httpclient.HttpMethodDirector DEBUG - Method retry handler returned false. Automatic recovery will not be attempted [2013-08-16 14:55:11,994] org.apache.commons.httpclient.HttpConnection DEBUG - Releasing connection back to connection manager. [2013-08-16 14:55:11,994] org.apache.commons.httpclient.MultiThreadedHttpConnectionManager DEBUG - Freeing connection, hostConfig=HostConfiguration[host=http://10.152.160.18:8065] [2013-08-16 14:55:11,994] org.apache.commons.httpclient.util.IdleConnectionHandler DEBUG - Adding connection at: 1376645111994 [2013-08-16 14:55:11,995] org.apache.commons.httpclient.MultiThreadedHttpConnectionManager DEBUG - Notifying no-one, there are no waiting threads [2013-08-16 14:55:11,996] org.apache.camel.processor.DeadLetterChannel DEBUG - Failed delivery for exchangeId: ID-CHDSEZ102214D-61690-1376645101689-0-1. On delivery attempt: 0 caught: java.net.ConnectException: Connection refused: connect [2013-08-16 14:55:12,007] org.apache.camel.processor.SendProcessor DEBUG - >>>> Endpoint[direct://foo] Exchange[Message: BeanInvocation public abstract com.poc.camel.interesting.ServiceProviderPayload com.poc.camel.interesting.ApiServices.performOperation(com.poc.camel.interesting.ServiceProviderPayload) with [com.poc.camel.interesting.ServiceProviderPayload@8cd4db]]] [2013-08-16 14:55:12,007] org.apache.camel.processor.interceptor.Tracer INFO - ID-CHDSEZ102214D-61690-1376645101689-0-1 >>> (route4) http://ThirdPartyServers?throwExceptionOnFailure=false --> <<< Pattern:InOnly, BodyType:org.apache.camel.component.bean.BeanInvocation, Body:BeanInvocation public abstract com.poc.camel.interesting.ServiceProviderPayload com.poc.camel.interesting.ApiServices.performOperation(com.poc.camel.interesting.ServiceProviderPayload) with [com.poc.camel.interesting.ServiceProviderPayload@8cd4db]] [2013-08-16 14:55:12,009] org.apache.camel.processor.interceptor.Tracer INFO - ID-CHDSEZ102214D-61690-1376645101689-0-1 >>> (route4) --> hibernate://com.poc.camel.interesting.Queue <<< Pattern:InOnly, BodyType:com.poc.camel.interesting.Queue, Body:com.poc.camel.interesting.Queue@a4be02 [2013-08-16 14:55:12,010] org.apache.camel.processor.SendProcessor DEBUG - >>>> Endpoint[hibernate://com.poc.camel.interesting.Queue] Exchange[Message: com.poc.camel.interesting.Queue@a4be02] [2013-08-16 14:55:12,039] org.springframework.orm.hibernate3.HibernateTransactionManager DEBUG - Creating new transaction with name [null]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT [2013-08-16 14:55:12,286] org.hibernate.impl.SessionImpl DEBUG - opened session at timestamp: 13766451120 [2013-08-16 14:55:12,286] org.springframework.orm.hibernate3.HibernateTransactionManager DEBUG - Opened new Session [org.hibernate.impl.SessionImpl@1f53293] for Hibernate transaction [2013-08-16 14:55:12,291] org.springframework.orm.hibernate3.HibernateTransactionManager DEBUG - Preparing JDBC Connection of Hibernate Session [org.hibernate.impl.SessionImpl@1f53293] [2013-08-16 14:55:12,329] org.hibernate.transaction.JDBCTransaction DEBUG - begin [2013-08-16 14:55:12,329] org.hibernate.jdbc.ConnectionManager DEBUG - opening JDBC connection [2013-08-16 14:55:12,329] org.hibernate.transaction.JDBCTransaction DEBUG - current autocommit status: true [2013-08-16 14:55:12,329] org.hibernate.transaction.JDBCTransaction DEBUG - disabling autocommit [2013-08-16 14:55:12,330] org.hibernate.impl.SessionImpl DEBUG - opened session at timestamp: 13766451123 [2013-08-16 14:55:12,412] org.springframework.transaction.support.TransactionTemplate DEBUG - Initiating transaction rollback on application exception org.hibernate.HibernateException: persist is not valid without active transaction at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:341) at $Proxy42.persist(Unknown Source) at org.apacheextras.camel.component.hibernate.HibernateProducer$1.doInTransaction(HibernateProducer.java:54) at org.apacheextras.camel.component.hibernate.SpringTransactionStrategy$1.doInTransaction(SpringTransactionStrategy.java:43) at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130) at org.apacheextras.camel.component.hibernate.SpringTransactionStrategy.execute(SpringTransactionStrategy.java:40) at org.apacheextras.camel.component.hibernate.HibernateProducer.process(HibernateProducer.java:49) at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.SendProcessor$2.doInAsyncProducer(SendProcessor.java:115) at org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:285) at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:110) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:71) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:163) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:322) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:213) at org.apache.camel.processor.interceptor.StreamCachingInterceptor.process(StreamCachingInterceptor.java:53) at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:303) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.Pipeline.process(Pipeline.java:117) at org.apache.camel.processor.Pipeline.process(Pipeline.java:80) at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:122) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:71) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:61) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.SendProcessor$2.doInAsyncProducer(SendProcessor.java:115) at org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:285) at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:110) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.RedeliveryErrorHandler.deliverToFailureProcessor(RedeliveryErrorHandler.java:741) at org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:265) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:213) at org.apache.camel.processor.interceptor.StreamCachingInterceptor.process(StreamCachingInterceptor.java:53) at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:303) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.Pipeline.process(Pipeline.java:117) at org.apache.camel.processor.Pipeline.process(Pipeline.java:80) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:85) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:71) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:163) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:322) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:213) at org.apache.camel.processor.interceptor.StreamCachingInterceptor.process(StreamCachingInterceptor.java:53) at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:303) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.Pipeline.process(Pipeline.java:117) at org.apache.camel.processor.Pipeline.process(Pipeline.java:80) at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150) at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:71) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:99) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:86) at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:48) at org.apache.camel.component.bean.AbstractCamelInvocationHandler$1.call(AbstractCamelInvocationHandler.java:83) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at org.apache.camel.component.bean.AbstractCamelInvocationHandler.invokeWithbody(AbstractCamelInvocationHandler.java:101) at org.apache.camel.component.bean.CamelInvocationHandler.invoke(CamelInvocationHandler.java:44) at $Proxy34.performOperation(Unknown Source) at com.poc.camel.interesting.CamelDeadLetterTester.test(CamelDeadLetterTester.java:17) at com.poc.camel.interesting.CamelDeadLetterTester.main(CamelDeadLetterTester.java:25) [2013-08-16 14:55:12,415] org.springframework.orm.hibernate3.HibernateTransactionManager DEBUG - Initiating transaction rollback [2013-08-16 14:55:12,416] org.springframework.orm.hibernate3.HibernateTransactionManager DEBUG - Rolling back Hibernate transaction on Session [org.hibernate.impl.SessionImpl@1f53293] [2013-08-16 14:55:12,416] org.hibernate.transaction.JDBCTransaction DEBUG - rollback [2013-08-16 14:55:12,417] org.hibernate.transaction.JDBCTransaction DEBUG - re-enabling autocommit [2013-08-16 14:55:12,417] org.hibernate.transaction.JDBCTransaction DEBUG - rolled back JDBC Connection [2013-08-16 14:55:12,417] org.hibernate.jdbc.ConnectionManager DEBUG - transaction completed on session with on_close connection release mode; be sure to close the session to release JDBC resources! [2013-08-16 14:55:12,417] org.springframework.orm.hibernate3.HibernateTransactionManager DEBUG - Closing Hibernate Session [org.hibernate.impl.SessionImpl@1f53293] after transaction [2013-08-16 14:55:12,417] org.springframework.orm.hibernate3.SessionFactoryUtils DEBUG - Closing Hibernate Session [2013-08-16 14:55:12,418] org.hibernate.jdbc.ConnectionManager DEBUG - releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)] [2013-08-16 14:55:12,418] org.hibernate.jdbc.ConnectionManager DEBUG - transaction completed on session with on_close connection release mode; be sure to close the session to release JDBC resources! [2013-08-16 14:55:12,422] org.apache.camel.processor.DefaultErrorHandler DEBUG - Failed delivery for exchangeId: ID-CHDSEZ102214D-61690-1376645101689-0-1. On delivery attempt: 0 caught: org.hibernate.HibernateException: persist is not valid without active transaction [2013-08-16 14:55:12,422] org.apache.camel.processor.DefaultErrorHandler ERROR - Failed delivery for exchangeId: ID-CHDSEZ102214D-61690-1376645101689-0-1. Exhausted after delivery attempt: 1 caught: org.hibernate.HibernateException: persist is not valid without active transaction So is it because of my outdated versions of hibernate and spring. Or am I missing something in my transaction/spring/hibernate configuration. I went through CAMEL-5849 ticket at JIRA, but if we dont have an option of changing version, what's the alternative ? I referred to camel-hibernate example given at Camel website for whole poc. -- View this message in context: http://camel.465427.n5.nabble.com/Camel-Hibernate-org-hibernate-HibernateException-persist-is-not-valid-without-active-transaction-tp5737387.html Sent from the Camel - Users mailing list archive at Nabble.com.