Quantcast
Channel: Apache Timeline
Viewing all articles
Browse latest Browse all 5648

Camel Exchange not returned when SocketTimeoutException happens

$
0
0
Hi,

I'm working with the cxf component in order to consume from JAX-WS services,
and everything works like a charm, but I'm having trouble when a
SocketTimeoutException happens. In this case, I have no Camel Exchange
coming back from the endpoint.

Example:

from(startEndpoint)
.doTry()
.to(cxfEndpoint)
.doCatch(Throwable.class)
.log("Hey, an exception happened")
.bean(myExceptionHandler)
.end();

When a Exception that is not a SocketTimeoutException happens, then the
message moves into the "doCatch" block as expected and the message continues
the routing. Otherwise, when a SocketTimeoutException occurs doesn´t, as if
the Camel Exchange would have disappeared or a thread would have been
killed.

I have been debugging and when the SocketTimeoutException happens, the Camel
Exchange is, at first, populated from cxf response:

ClientOutFaultObserver.onMessage -> CxfClientCallback.handleException ->
DefaultCxfBinding.populateExchangeFromCxfResponse

But despite off my debugging I lose the track and I'm not able to see where
exactly the message is lost, but I see that the message achieves the cxf
component, so I don´t know exactly if it´s a Camel Cxf component "issue" or
a CXF API one.

I wanted to ask if anyone knows if this is the expected behaviour for this
kind of exception (maybe for an InterruptedIOException it is), or if I
should expect the message to be retrieved.

Extra information:
- The SocketTimeoutException happens after establishing the connection,
when the socket is ready to read
- If, for example, an UnknownHostException happens, I have a Camel Exchange
in the "doCatch" block
- The CXF endpoints are configured using Spring and use SSL (certificate
authentication)
- Apache Camel version 2.11.2

Thanks in advance.

KR,

Aida.

Viewing all articles
Browse latest Browse all 5648

Trending Articles