Użyłem JAXWS-RI 2.1 do stworzenia interfejsu dla mojej usługi internetowej, opartego na WSDL. Nie mogę współdziałać z usługą sieciową bez problemów, ale nie udało mi się określić limitu czasu na wysyłanie żądań do usługi sieciowej. Jeśli z jakiegoś powodu nie reaguje, klient po prostu wydaje się kręcić kołami na zawsze.
Polowanie ujawniło, że prawdopodobnie powinienem spróbować zrobić coś takiego:
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.ws.request.timeout", 10000);
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.ws.connect.timeout", 10000);
Odkryłem również, że w zależności od posiadanej wersji JAXWS-RI może być konieczne ustawienie tych właściwości:
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.internal.ws.request.timeout", 10000);
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.internal.ws.connect.timeout", 10000);
Problem polega na tym, że niezależnie od tego, które z powyższych jest poprawne, nie wiem, gdzie mogę to zrobić. Wszystko, co mam, to Service
podklasa, która implementuje automatycznie generowany interfejs do usługi sieciowej, a w momencie, gdy jest to uruchamiane, jeśli WSDL nie reaguje, jest już za późno na ustawienie właściwości:
MyWebServiceSoap soap;
MyWebService service = new MyWebService("http://www.google.com");
soap = service.getMyWebServiceSoap();
soap.sendRequestToMyWebService();
Czy ktoś może wskazać mi właściwy kierunek ?!