Usei JAXWS-RI 2.1 para criar uma interface para meu serviço da web, com base em um WSDL. Posso interagir com o serviço da web sem problemas, mas não consegui especificar um tempo limite para enviar solicitações ao serviço da web. Se por algum motivo ele não responder, o cliente parece apenas girar suas rodas para sempre.
Procurar por aí revelou que provavelmente eu deveria tentar fazer algo assim:
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.ws.request.timeout", 10000);
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.ws.connect.timeout", 10000);
Também descobri que, dependendo de qual versão do JAXWS-RI você possui, pode ser necessário definir estas propriedades:
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.internal.ws.request.timeout", 10000);
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.internal.ws.connect.timeout", 10000);
O problema que tenho é que, independentemente de qual das opções acima seja a correta, não sei onde posso fazer isso. Tudo o que tenho é uma Service
subclasse que implementa a interface gerada automaticamente para o serviço da web e no ponto em que isso está sendo instanciado, se o WSDL não responder, então já é tarde demais para definir as propriedades:
MyWebServiceSoap soap;
MyWebService service = new MyWebService("http://www.google.com");
soap = service.getMyWebServiceSoap();
soap.sendRequestToMyWebService();
Alguém pode me apontar na direção certa?!