我们正在使用Web服务消费者来访问由第三方托管的服务。在访问服务时,SocketTimeOutException会在16分钟后发生。
我们的Web服务消费者配置如下所示。
<ws:consumer-config name="config_name"
wsdlLocation="${wsdlLocation}"
service="Service_name" port="service_portType"
serviceAddress="${serviceAddress}"
doc:name="Web Service Consumer" />
<ws:consumer config-ref="config_name" operation="test_operation"
doc:name="do_it" />
我们在配置文件的顶部设置了一个默认的响应超时。
<configuration defaultResponseTimeout="1000000" doc:name="Configuration" />
现在,当我们向第三方询问超时时,他们要求我们将服务器的SO_TIMEOUT设置为0。
我知道我们可以将其设置为https:connector,属性为serverSoTimeout="0"。我的问题是,我们如何为Web服务消费者设置它?
这可以通过向webservice端点添加一个参数来设置,如下所示:http://hostname:port/restoftheendpoint?responseTimeout=120000或这可以在连接到wsconsumer配置的http侦听器全局配置上进行设置,如下所示:
<ws:consumer-config name="test" wsdlLocation="test.wsdl" service="test" port="testSoap" serviceAddress="${test.endpoint}" doc:name="Web Service Consumer" connectorConfig="HTTP_Request_Config" />
<http:request-config name="HTTP_Request_Config" host="test" port="2000" responseTimeout="30000" doc:name="HTTP Request Configuration">
</http:request-config>