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

时间:2016-04-05 09:28:51

标签: 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 = (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。

prov.getRequestContext ().put ("com.sun.xml.ws.request.timeout", 1000000);

但他们使用我名字空间中没有的对象。

e.g。

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,64bit),可以编译和运行我的web服务,webclient和wsimport。没有netbeans,没有安装jboss。

我有什么想法可以设置超时? 感谢帮助! 克里斯

2 个答案:

答案 0 :(得分:4)

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

mysql_query("SELECT resume_data_file.App_Email, position.Position_ID FROM position INNER JOIN resume_data_file ON position.Position_ID = position.Position_ID  WHERE position.Position_ID = '".$pos_id."'   ");

请在即将推出的JAX-WS版本中提升我的JIRA问题以使其标准化 https://java.net/jira/browse/JAX_WS-1166

答案 1 :(得分:0)

还有一个。此处或相关帖子中提到的选项均不适合我。真的,真是一团糟……

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