import javax.xml.ws.Binding; import javax.xml.ws.BindingProvider; import javax.xml.ws.WebServiceRef; import javax.xml.ws.handler.Handler; public class WebServiceCaller implements Serializable { private static final int MINUTES = 60000; @WebServiceRef(wsdlLocation = "http://localhost/WebService.wsdl") WebService webService; public void callWebService(String userId, String ip) { Service port = captureAndConfigurePort(userId, ip); port.callMethod(); } private Service captureAndConfigurePort(String userId, String ip) { Service port = webService.getWebServicePort(); Binding binding = ((BindingProvider) port).getBinding(); List handlerChain = binding.getHandlerChain(); handlerChain.add(new WebServiceHandler(userId, ip)); binding.setHandlerChain(handlerChain); Map requestContext = ((BindingProvider) port).getRequestContext(); requestContext.put("javax.xml.ws.client.receiveTimeout", 30 * MINUTES); return port; } }