camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Aida <ai.d...@gmail.com>
Subject Re: [Camel-Cxf] Camel Exchange not returned when SocketTimeoutException happens
Date Wed, 07 May 2014 11:36:35 GMT
Hi,

I confirm that the problem continues happening to me using the 2.13.0
version of Camel.

Just for recall:
	* I'm calling Web Services using cxf endpoints
	* When a SocketTimeoutException happens there is no Exchange "coming back"
to the route from the request to the WS was made
	* I have checked that the behaviour is the same for Camel 2.11.2, 2.12.0
and 2.13.0
	* The example of this was:
	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 also have checked that:
	1. When the connection is not securized, there is no problem when a
SocketTimeoutException happens, and the message "comes back" to the route to
continue the routing
	2. When the connection is securized, the problem persists (if I force a
SocketTimeoutException to happen there is no message returning to the Camel
route)
	
	
Extra information:
	* For the cxf endpoints I have an httpConduit configured like:
		<http:conduit name="{http://... .http-conduit">
			<http:tlsClientParameters>
				<sec:trustManagers>
					<sec:keyStore type="JKS" resource="ssl/certs/mytrust.jks" />
				</sec:trustManagers>
				<sec:keyManagers keyPassword="${keystore.password.my}">
					<sec:keyStore type="JKS" password="${keystore.password.my}"
resource="${keystore.file.path.my}" />
				</sec:keyManagers>	
			</http:tlsClientParameters>
		</http:conduit>
	
	
	* An example of the exception message is this one (and apart from this
message I have no more information in the log, such as information about the
Exchange being processed in the route like the information logged since
2.12.X branch when an exception happens in a route):

 java.lang.RuntimeException: java.net.SocketTimeoutException: Read timed out
     at
org.apache.cxf.attachment.LazyAttachmentCollection$1.hasNext(LazyAttachmentCollection.java:103)
     at
org.apache.camel.component.cxf.DefaultCxfBinding.populateExchangeFromCxfResponse(DefaultCxfBinding.java:176)
     at
org.apache.camel.component.cxf.CxfClientCallback.handleException(CxfClientCallback.java:96)
     at
org.apache.cxf.interceptor.ClientOutFaultObserver.onMessage(ClientOutFaultObserver.java:59)
     at org.apache.cxf.endpoint.ClientImpl$1.onMessage(ClientImpl.java:556)
     at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(HTTPConduit.java:1138)
     at
org.apache.cxf.workqueue.AutomaticWorkQueueImpl$3.run(AutomaticWorkQueueImpl.java:428)
     at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
     at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
     at
org.apache.cxf.workqueue.AutomaticWorkQueueImpl$AWQThreadFactory$1.run(AutomaticWorkQueueImpl.java:353)
     at java.lang.Thread.run(Thread.java:662)
 Caused by: java.net.SocketTimeoutException: Read timed out
     at java.net.SocketInputStream.socketRead0(Native Method)
     at java.net.SocketInputStream.read(SocketInputStream.java:129)
     at
com.sun.net.ssl.internal.ssl.InputRecord.readFully(InputRecord.java:293)
     at
com.sun.net.ssl.internal.ssl.InputRecord.readV3Record(InputRecord.java:405)
     at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:360)
     at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:830)
     at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:787)
     at
com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:75)
     at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
     at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
     at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
     at
sun.net.www.http.ChunkedInputStream.readAheadBlocking(ChunkedInputStream.java:525)
     at
sun.net.www.http.ChunkedInputStream.readAhead(ChunkedInputStream.java:582)
     at
sun.net.www.http.ChunkedInputStream.read(ChunkedInputStream.java:669)
     at java.io.FilterInputStream.read(FilterInputStream.java:116)
     at
sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:2668)
     at
sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:2663)
     at
sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:2652)
     at java.io.FilterInputStream.read(FilterInputStream.java:66)
     at java.io.PushbackInputStream.read(PushbackInputStream.java:122)
     at
org.apache.cxf.attachment.AttachmentDeserializer.readNext(AttachmentDeserializer.java:177)
     at
org.apache.cxf.attachment.LazyAttachmentCollection$1.hasNext(LazyAttachmentCollection.java:95)
     ... 10 more	



--
View this message in context: http://camel.465427.n5.nabble.com/Camel-Cxf-Camel-Exchange-not-returned-when-SocketTimeoutException-happens-tp5750398p5750944.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Mime
View raw message