Я звоню в веб-сервис с Java. Он работает хорошо, но я тоже хочу установить таймаут соединения.Java SOAP/JAX-WS: как установить таймауты?
Мой код:
URL urlwsdl = new URL ("file://" + wsdl);
QName qn = new QName("http://myserver/myservice", "MyService");
port = new TimeSeriesService_Service (urlwsdl, qn).getMyServicePort();
BindingProvider prov = (BindingProvider) port;
prov.getRequestContext().put (BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://server1/myservice");
prov.getRequestContext().put (BindingProvider.USERNAME_PROPERTY, "max");
prov.getRequestContext().put (BindingProvider.PASSWORD_PROPERTY, "secret");
QueryRequest1 req = new QueryRequest1();
QueryResponse1 res = port.queryRequest1 (req); // *** TIMEOUT for ~2 minutes
Я нашел некоторые сообщения в интернете. Они используют контекст поставщика привязки, как и для http-auth.
например.
prov.getRequestContext().put ("com.sun.xml.ws.request.timeout", 1000000);
Но они используют объекты, которых у меня нет в моем пространстве имен.
например.
sun.net.client.defaultConnectTimeout
com.sun.xml.ws.connect.timeout
com.sun.xml.ws.request.timeout
У меня есть sun.net, но нет .клиент. У меня есть com.sun.xml, но не .ws.
У меня есть простой java jdk (1.7, Debian 8.3, 64bit) и можно скомпилировать и запустить мой веб-сервис, веб-клиент, а также wsimport. Нет чистых бинов и не установлен jboss.
Любые идеи, как я могу установить тайм-аут? Спасибо за помощь! Chris
У меня есть com.sun.xml.internal.ws, но затем нет соединения. Нужен ли мне внешний JAR у JDK? – chris01
В JDK нет ничего, что вам нужно. Проверьте класс 'com.sun.xml.internal.ws.developer.JAXWSProperties', чтобы увидеть, что у вас есть те же самые значения. –
Я получаю эту ошибку: Тип JAXWSProperties недоступен из-за ограничения на требуемую библиотеку /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rt.jar – chris01