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