Я использовал 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();
Может ли кто-нибудь указать мне в правильном направлении?!