JavaSOAP/JAX-WS:如何设置超时?

JavaSOAP/JAX-WS:如何设置超时?,java,web-services,soap,jax-ws,Java,Web Services,Soap,Jax Ws,我正在用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 = (Bin

我正在用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一样

e、 g

但它们使用我的命名空间中没有的对象

e、 g

我有sun.net,但没有.client。 我有com.sun.xml,但没有.ws

我有一个简单的java jdk(1.7,Debian 8.3,64位),可以编译和运行我的webservice、webclient和wsimport。没有安装netbeans和jboss

你知道我怎么设置超时吗? 谢谢你的帮助!
Chris

使用JDK JAX-WS实现,您可能应该设置内部属性

 ((BindingProvider) port).getRequestContext().put("com.sun.xml.internal.ws.connect.timeout", timeout);
 ((BindingProvider) port).getRequestContext().put("com.sun.xml.internal.ws.request.timeout", timeout);
请更新我的JIRA问题,以便在即将发布的JAX-WS版本中对此进行标准化

使用JDK JAX-WS实现,您可能应该设置内部属性

 ((BindingProvider) port).getRequestContext().put("com.sun.xml.internal.ws.connect.timeout", timeout);
 ((BindingProvider) port).getRequestContext().put("com.sun.xml.internal.ws.request.timeout", timeout);
请更新我的JIRA问题,以便在即将发布的JAX-WS版本中对此进行标准化
还有一个。这里提到的或相关帖子中提到的选项都不适合我。真的,真是一团糟

 ((BindingProvider) port).getRequestContext().put(org.apache.axis2.transport.http.HTTPConstants.CONNECTION_TIMEOUT, 3000);

还有一个。这里提到的或相关帖子中提到的选项都不适合我。真的,真是一团糟

 ((BindingProvider) port).getRequestContext().put(org.apache.axis2.transport.http.HTTPConstants.CONNECTION_TIMEOUT, 3000);

我有com.sun.xml.internal.ws,但没有连接。我需要JDK旁边的外部JAR吗?不,您需要的所有东西都在JDK中。检查类
com.sun.xml.internal.ws.developer.JAXWSProperties
以查看是否具有完全相同的值。我得到以下错误:由于对所需库/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rt.jar的限制,无法访问类型JAXWSProperties。您应该始终避免在
com.sun
包中使用类。我的建议只是查看JDK中定义的常量字段。然后你应该在代码中复制它。@Willem Salembier指向的页面被移到了这里,我有com.sun.xml.internal.ws,但是没有连接。我需要JDK旁边的外部JAR吗?不,您需要的所有东西都在JDK中。检查类
com.sun.xml.internal.ws.developer.JAXWSProperties
以查看是否具有完全相同的值。我得到以下错误:由于对所需库/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rt.jar的限制,无法访问类型JAXWSProperties。您应该始终避免在
com.sun
包中使用类。我的建议只是查看JDK中定义的常量字段。然后你应该把它复制到你的代码中,@Willem salenbier指向的页面被移到了这里