Hi,
I have deployed a cxf - camel project using WS-RM spec top of Fuse 4.2.
The CXF endpoint receives well the webservice, initiate the Reliable
communication as I see a feedback to the client but when the camel route
must propagate the feedback to the caller, it does not receive anything and
the message is not placed in the queue. If I don't place the message in a
queue, the web service receives the feedback. After the timeout period, I
get this error in the Fuse 4.2 log
Log error
15:12:56,718 | ERROR | 0...@qtp-28446306-0 | DefaultErrorHandler |
rg.apache.camel.processor.Logger 248 | Failed delivery for exchangeId:
8114851b-c94c-484c-9638-4710a407da6e. Exhausted after delivery attempt: 1
caught: org.springframework.jms.UncategorizedJmsException: Uncategorized
exception occured during JMS processing; nested exception is
javax.jms.JMSException: Unexpected failure.
org.springframework.jms.UncategorizedJmsException: Uncategorized exception
occured during JMS processing; nested exception is javax.jms.JMSException:
Unexpected failure.
at
org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:308)
at
org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:168)
at
org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:474)
at
org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.send(JmsConfiguration.java:195)
at
org.apache.camel.component.jms.JmsProducer.doSend(JmsProducer.java:375)
at
org.apache.camel.component.jms.JmsProducer.processInOnly(JmsProducer.java:320)
at
org.apache.camel.component.jms.JmsProducer.process(JmsProducer.java:150)
at
org.apache.camel.processor.SendProcessor$1.doInProducer(SendProcessor.java:97)
at
org.apache.camel.processor.SendProcessor$1.doInProducer(SendProcessor.java:95)
at
org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:146)
at
org.apache.camel.processor.SendProcessor.doProcess(SendProcessor.java:94)
at
org.apache.camel.processor.SendProcessor.process(SendProcessor.java:82)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)
at
org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:53)
at
org.apache.camel.processor.DelegateProcessor.proceed(DelegateProcessor.java:82)
at
org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:161)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)
at
org.apache.camel.processor.RedeliveryErrorHandler.processExchange(RedeliveryErrorHandler.java:177)
at
org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:143)
at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:88)
at
org.apache.camel.processor.DefaultErrorHandler.process(DefaultErrorHandler.java:49)
at
org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:228)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:74)
at
org.apache.camel.processor.UnitOfWorkProcessor.processNext(UnitOfWorkProcessor.java:66)
at
org.apache.camel.processor.DelegateProcessor.process(DelegateProcessor.java:48)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)
at
org.apache.camel.component.cxf.CxfConsumer$1.invoke(CxfConsumer.java:91)
at
org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at
org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
at
org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:109)
at
org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:312)
at
org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:276)
at
org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:70)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Caused by: javax.jms.JMSException: Unexpected failure.
at
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:62)
at
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1283)
at
org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1367)
at
org.apache.activemq.ActiveMQConnection.createSession(ActiveMQConnection.java:302)
at
org.apache.activemq.pool.SessionPool.createSession(SessionPool.java:117)
at org.apache.activemq.pool.SessionPool.makeObject(SessionPool.java:85)
at
org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1148)
at
org.apache.activemq.pool.SessionPool.borrowSession(SessionPool.java:54)
at
org.apache.activemq.pool.ConnectionPool.createSession(ConnectionPool.java:108)
at
org.apache.activemq.pool.PooledConnection.createSession(PooledConnection.java:141)
at
org.springframework.jms.support.JmsAccessor.createSession(JmsAccessor.java:196)
at
org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:462)
... 46 more
Caused by: java.io.IOException: Unexpected failure.
at
org.apache.activemq.transport.failover.FailoverTransport.oneway(FailoverTransport.java:462)
at
org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:40)
at
org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:81)
at
org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:86)
at
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1261)
... 56 more
Route
<bean id="webservice"
class="org.apache.camel.example.reportincident.internal.WebService" />
<bean id="feedback"
class="org.apache.camel.example.reportincident.internal.Feedback" />
<cxf:bus>
<cxf:features>
<cxf:logging />
<wsa:addressing />
<wsrm-mgr:reliableMessaging>
<wsrm-policy:RMAssertion>
<wsrm-policy:BaseRetransmissionInterval
Milliseconds="4000" />
<wsrm-policy:AcknowledgementInterval Milliseconds="2000"
/>
</wsrm-policy:RMAssertion>
<wsrm-mgr:destinationPolicy>
<wsrm-mgr:acksPolicy intraMessageThreshold="0" />
</wsrm-mgr:destinationPolicy>
</wsrm-mgr:reliableMessaging>
</cxf:features>
</cxf:bus>
<http:conduit name="{http://reportincident.example.camel.apache.org
}ReportIncidentEndpoint.http-conduit">
<http:client DecoupledEndpoint="
http://localhost:8080/cxf/camel-example/incident" />
</http:conduit>
<!-- webservice endpoint -->
<cxfcamel:cxfEndpoint
id="reportIncident"
address="http://localhost:8080/cxf/camel-example/incident"
serviceClass="org.apache.camel.example.reportincident.ReportIncidentEndpoint"
xmlns:s="http://reportincident.example.camel.apache.org">
</cxfcamel:cxfEndpoint>
<osgi:reference id="queuingservice"
interface="org.apache.camel.Component" />
<camel:camelContext trace="true"
xmlns="http://camel.apache.org/schema/osgi">
<camel:route>
<camel:from uri="cxf:bean:reportIncident" />
<camel:convertBodyTo
type="org.apache.camel.example.reportincident.InputReportIncident" />
<camel:to uri="bean:webservice" />
<camel:inOnly uri="queuingservice:queue:in" />
<camel:transform>
<camel:method bean="feedback" method="setOk" />
</camel:transform>
</camel:route>
</camel:camelContext>
Any idea are welcome ?
Kind regards
Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer
*****************************
blog : http://cmoulliard.blogspot.com
twitter : http://twitter.com/cmoulliard
Linkedlin : http://www.linkedin.com/in/charlesmoulliard
Apache Camel Group :
http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm