On Fri, Aug 16, 2013 at 3:07 PM, Christian Müller
<christian.muel...@gmail.com> wrote:
> Also use Camel 2.11 if possible.
>

Yeah there is an example
http://camel.apache.org/hibernate-example.html

And the camel-hibernate component has been improved in this release
(though its from camel-extra).


> Best,
> Christian
> Am 16.08.2013 11:57 schrieb "anand_tech" <anand29...@gmail.com>:
>
>> 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.
>>



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
Email: cib...@redhat.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

Reply via email to