【发布时间】:2016-04-05 09:28:50
【问题描述】:
我正在使用 Java 调用 Web 服务。它运行良好,但我也想设置连接超时。
我的代码:
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 但没有 .client。 我有 com.sun.xml 但没有 .ws。
我有一个简单的 java jdk(1.7,Debian 8.3,64 位),可以编译和运行我的 web 服务、webclient 和 wsimport。没有安装 netbeans 和 jboss。
任何想法如何设置超时? 感谢帮助! 克里斯
【问题讨论】:
标签: java web-services soap jax-ws