Я использовал JAXWS-RI 2.1 для создания интерфейса для моей веб-службы на основе WSDL. Я могу взаимодействовать с веб-службой без проблем, но не могу указать тайм-аут для отправки запросов к веб-службе. Если по какой-то причине он не отвечает, клиент просто крутит колеса вечно.
Поиски вокруг показали, что мне, вероятно, следует попробовать сделать что-то вроде этого:
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.ws.request.timeout", 10000);
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.ws.connect.timeout", 10000);
Я также обнаружил, что в зависимости от того, какая у вас версия JAXWS-RI, вам может потребоваться вместо этого установить следующие свойства:
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.internal.ws.request.timeout", 10000);
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.internal.ws.connect.timeout", 10000);
Проблема в том, что, независимо от того, что из вышеперечисленного является правильным, я не знаю, где я могу это сделать. Все, что у меня есть, - это Service
подкласс, который реализует автоматически сгенерированный интерфейс для веб-сервиса, и в момент создания его экземпляра, если WSDL не отвечает, тогда уже слишком поздно устанавливать свойства:
MyWebServiceSoap soap;
MyWebService service = new MyWebService("http://www.google.com");
soap = service.getMyWebServiceSoap();
soap.sendRequestToMyWebService();
Может кто-то указать мне верное направление?!