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