Setting timeout on generated JAXWS CXF Clients
23/09/2009
un commentaire
When generating client with the CXF (2.2.2 in this case, should apply to all…) Java API without any configuration file, here is the way to set the client timeout :
package org.ow2.petals.kernel.ws.client; import org.apache.cxf.endpoint.Client; import org.apache.cxf.frontend.ClientProxy; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import org.apache.cxf.transport.http.HTTPConduit; import org.apache.cxf.transports.http.configuration.HTTPClientPolicy; import org.ow2.petals.kernel.ws.api.RuntimeService; public class Main { private void createService() { long timeout = 10000L; JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setServiceClass(RuntimeService.class); factory.setAddress("http://localhost:9999/service/Runtime"); RuntimeService runtimeService = (RuntimeService) factory.create(); Client client = ClientProxy.getClient(runtimeService); if (client != null) { HTTPConduit conduit = (HTTPConduit) client.getConduit(); HTTPClientPolicy policy = new HTTPClientPolicy(); policy.setConnectionTimeout(timeout); policy.setReceiveTimeout(timeout); conduit.setClient(policy); } } }
Note that here the RuntimeService class is my JAXWS annotated class.