如何在Java中设置SOAP连接超时?

时间:2015-11-17 15:15:18

标签: java web-services soap

我使用以下代码将SOAP请求发送到端点。由于我们在从服务器获取响应时遇到一些延迟,我想在代码中设置连接超时。

代码:

SOAPConnectionFactory soapConnectionFactory =SOAPConnectionFactory.newInstance();
SOAPConnection soapConnection = soapConnectionFactory.createConnection();   
MimeHeaders header = new MimeHeaders();              
header.addHeader("Content-type", "application/soap+xml;charset=UTF-8");
header.addHeader("SOAPAction", soapAction);
InputStream is = new ByteArrayInputStream(reqXML.getBytes());
SOAPMessage request = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL).createMessage(header, is);            
SOAPMessage soapResponse = soapConnection.call(request, endPoint);

有人可以帮我修改我的代码以添加超时值吗?

我已经通过线程Setting socket read timeout with javax.xml.soap.SOAPConnection支持同样的问题。我无法使用此处提供的解决方案,因为如果在创建soap消息时未指定soap版本,则会失败。

1 个答案:

答案 0 :(得分:0)

因为SOAP使用下面的jave.net.URLConnection,所以可以设置连接超时的系统参数 对SOAP也有效。您可以设置以下参数

-Dsun.net.client.defaultConnectTimeout =<超时>

-Dsun.rmi.transport.proxy.connectTimeout =<超时>