2016-11-18 223 views
1

我有一個駱駝路線這需要相當長的一段時間來完成,但它到底是用以下異常失敗:如何設置特定駱駝路線的事務超時?

org.springframework.transaction.UnexpectedRollbackException: JTA transaction already rolled back (probably due to a timeout) 
       at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1019) 
       at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:757) 
       at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:726) 
       at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:521) 
       at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:291) 
       at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) 
       at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
       at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) 
       at com.sun.proxy.$Proxy228.isPDURequestSuccessful(Unknown Source) 
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
       at java.lang.reflect.Method.invoke(Method.java:498) 
       at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:407) 
       at org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:278) 
       at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:251) 
       at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:166) 
       at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72) 
       at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398) 
       at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191) 
       at org.apache.camel.processor.Pipeline.process(Pipeline.java:118) 
       at org.apache.camel.processor.Pipeline.process(Pipeline.java:80) 
       at org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:111) 
       at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72) 
       at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398) 
       at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191) 
       at org.apache.camel.processor.Pipeline.process(Pipeline.java:118) 
       at org.apache.camel.processor.Pipeline.process(Pipeline.java:80) 
       at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191) 
       at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:51) 
       at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:110) 
       at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72) 
       at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398) 
       at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191) 
       at org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:111) 
       at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72) 
       at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398) 
       at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191) 
       at org.apache.camel.processor.Pipeline.process(Pipeline.java:118) 
       at org.apache.camel.processor.Pipeline.process(Pipeline.java:80) 
       at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191) 
       at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:51) 
       at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:110) 
       at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72) 
       at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398) 
       at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191) 
       at org.apache.camel.processor.Pipeline.process(Pipeline.java:118) 
       at org.apache.camel.processor.Pipeline.process(Pipeline.java:80) 
       at org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:111) 
       at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72) 
       at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398) 
       at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191) 
       at org.apache.camel.processor.Pipeline.process(Pipeline.java:118) 
       at org.apache.camel.processor.Pipeline.process(Pipeline.java:80) 
       at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191) 
       at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:51) 
       at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191) 
       at org.apache.camel.processor.UnitOfWorkProducer.process(UnitOfWorkProducer.java:73) 
       at org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:378) 
       at org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:346) 
       at org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:242) 
       at org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:346) 
       at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:184) 
       at org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:124) 
       at org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:137) 
       at org.apache.camel.impl.DefaultProducerTemplate$14.call(DefaultProducerTemplate.java:621) 
       at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
       at java.lang.Thread.run(Thread.java:745) 

我能得到它通過增加Wildfly設置超時工作,但是這是一個全局設置。無論如何,我可以設置相同的具體路線?

+0

什麼是您的源端點!這意味着路線如何接收消息 – Sagar

+0

@這是一條直接路線。看起來如下:from(「direct:promotions.util」),當這條路線完成時,我們觸發另一條路線。 – geekprogrammer

回答

1

有沒有一種簡單和乾淨的方式,至少不是我所知道的。您可以要求改進the project's JIRA,但在此之前,您可以嘗試爲您的路線定義自定義SpringTransactionPolicy,並使用具有所需超時設置的自定義TransactionTemplate進行初始化。