Ho usato JAXWS-RI 2.1 per creare un'interfaccia per il mio servizio web, basata su un WSDL. Riesco a interagire con il servizio web senza problemi, ma non sono stato in grado di specificare un timeout per l'invio delle richieste al servizio web. Se per qualche motivo non risponde, il cliente sembra semplicemente girare le ruote per sempre.
La caccia in giro ha rivelato che probabilmente dovrei provare a fare qualcosa del genere:
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.ws.request.timeout", 10000);
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.ws.connect.timeout", 10000);
Ho anche scoperto che, a seconda della versione di JAXWS-RI che hai, potresti dover impostare queste proprietà invece:
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.internal.ws.request.timeout", 10000);
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.internal.ws.connect.timeout", 10000);
Il problema che ho è che, indipendentemente da quale delle precedenti opzioni sia corretta, non so dove posso farlo. Tutto quello che ho è una Service
sottoclasse che implementa l'interfaccia generata automaticamente per il servizio web e al punto in cui questa viene istanziata, se il WSDL non risponde, è già troppo tardi per impostare le proprietà:
MyWebServiceSoap soap;
MyWebService service = new MyWebService("http://www.google.com");
soap = service.getMyWebServiceSoap();
soap.sendRequestToMyWebService();
Qualcuno può indicarmi la giusta direzione ?!