From 803d49e53edc6afdfca04c6fc50c1b738f66e418 Mon Sep 17 00:00:00 2001 From: "Brian M. Long" Date: Thu, 29 Jun 2023 10:45:55 -0400 Subject: [PATCH] added CXF-specific configurable connect/received timeout --- src/main/cxf/com/inteligr8/rs/ClientCxfImpl.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main/cxf/com/inteligr8/rs/ClientCxfImpl.java b/src/main/cxf/com/inteligr8/rs/ClientCxfImpl.java index 05e685d..9350815 100644 --- a/src/main/cxf/com/inteligr8/rs/ClientCxfImpl.java +++ b/src/main/cxf/com/inteligr8/rs/ClientCxfImpl.java @@ -24,6 +24,8 @@ import org.apache.cxf.BusFactory; import org.apache.cxf.jaxrs.client.JAXRSClientFactory; import org.apache.cxf.jaxrs.client.WebClient; import org.apache.cxf.jaxrs.impl.RuntimeDelegateImpl; +import org.apache.cxf.transport.http.HTTPConduit; +import org.apache.cxf.transports.http.configuration.HTTPClientPolicy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -129,6 +131,17 @@ public class ClientCxfImpl extends Client { // so we need to create a CXF client WebClient client = WebClient.create(this.getConfig().getBaseUrl(), providersAndFilters); + if (this.getConfig().getConnectTimeoutInMillis() != null || this.getConfig().getResponseTimeoutInMillis() != null) { + HTTPConduit conduit = client.getConfiguration().getHttpConduit(); + HTTPClientPolicy policy = conduit.getClient(); + if (policy == null) + conduit.setClient(policy = new HTTPClientPolicy()); + if (this.getConfig().getConnectTimeoutInMillis() != null) + policy.setConnectionTimeout(this.getConfig().getConnectTimeoutInMillis()); + if (this.getConfig().getResponseTimeoutInMillis() != null) + policy.setReceiveTimeout(this.getConfig().getResponseTimeoutInMillis()); + } + if (!this.getConfig().isDefaultBusEnabled()) { // Some applications (like ACS) add interceptors to the default bus // those interceptors may treat all messages as SOAP messages (like ACS), resulting in ClassCastExceptions