Hi Andriy, I tested the suggested system properties and I can confirm that they are working. Thanks for your help!
Best regards, Manuel -----Original Message----- From: Andriy Redko <drr...@gmail.com> Sent: Mittwoch, 18. August 2021 03:58 To: Shenavai, Manuel <manuel.shena...@sap.com>; dev@cxf.apache.org Subject: Re: External WSDLS and connection/read timeouts Hi Manuel, Thank you, it is clear now, the CXF delegates to the Spring context the resource (WSDL) loading part. So AFAIK Spring does not provide the way to propagate connect/read timeout to URL resources (at least, no easy way), you could still use JVM system properties [1] to set your own timeouts, they will be applied by default (both are milliseconds) : sun.net.client.defaultConnectTimeout sun.net.client.defaultReadTimeout For example: -Dsun.net.client.defaultReadTimeout=30000 -Dsun.net.client.defaultConnectTimeout=20000 Hope it helps. Thank you! [1] https://docs.oracle.com/javase/6/docs/technotes/guides/net/properties.html Best Regards, Andriy Redko SM> Hi Andriy, SM> thanks for your reply. I attached the stacktrace of the stuck call. This should give you the details you ask for, right? SM> Best regards, SM> Manuel SM> -----Original Message----- SM> From: Andriy Redko <drr...@gmail.com> SM> Sent: Dienstag, 17. August 2021 01:46 SM> To: Shenavai, Manuel <manuel.shena...@sap.com>; dev@cxf.apache.org SM> Subject: Re: External WSDLS and connection/read timeouts SM> Hi Manuel, SM> AFAIK CXF does not use org.springframework.core.io.AbstractFileResolvingResource (at least, directly). SM> Could you please trace where the last resource fetching attempt is coming from? SM> Thank you. SM> Best Regards, SM> Andriy Redko SM>> Hi everyone, SM>> we are using Camel CXF and found the following problem: SM>> It can happen that a route is trying to start for an infinite amount of time due to missing response from WSDL endpoint. SM>> Setup: SM>> A CXF endpoint that is using an external WSDL (i.e. wsdlURL=http://someHost/test/wsdl) SM>> The WSDL endpoint is not responding SM>> A conduit configured with 100ms timeouts (connections- and read-timeout) SM>> Test: SM>> I attached a sample app to this mail. To start the application, start DemoApplication.java. It will start a camel route containing a CXF endpoint. The CXF endpoint in the route tries to read an external WSDL. The endpoint for this WSDL is doing a 15 minute sleep before responding to simulate a "no response from WSDL endpoint" (implemented in RouteController). The conduit is configured with 100ms timeouts for connection- and readtimeout SM>> The application will fail to start if the route cannot be started. Since the WSDL can't be fetched within the 100ms timeout, I would expect the app-startup to fail at least within 1 minute. However the startup seems to go on for an infinite amount of time. SM>> I did some debugging and found several requests are done for the WSDL with different timeouts (in this order): SM>> 1. org.apache.cxf.transport.http.URLConnectionHTTPConduit:134 SM>> * connectionTimeout 100 ms SM>> * readTimeout 100 ms SM>> * timeout-values are taken from conduit SM>> 1. org.apache.cxf.resource.URIResolver:282 SM>> * connectionTimeout 30 seconds SM>> * readTimeout 60 seconds SM>> * hardcoded values SM>> 1. org.springframework.core.io.AbstractFileResolvingResource:60 SM>> * connectionTimeout 0 //infinite waiting SM>> * readTimeout 0 //infinite waiting SM>> * no explicit timeouts are set SM>> Our main problem here is the last request that has no timeout configured at all. I attached the stacktrace of the blocked thread. SM>> I would expect that the timeouts from the conduit are applied. This seems not to be the case so I think this is a bug. What do you think? SM>> Thanks in advance SM>> Best regards, SM>> Manuel