【问题标题】:Setting SO_TIMEOUT for Webservice consumer in mule在 mule 中为 Web 服务使用者设置 SO_TIMEOUT
【发布时间】:2016-08-04 22:45:10
【问题描述】:

我们正在使用网络服务消费者来访问由第三方托管的服务。 在点击服务时,SocketTimeOutException 会在 16 分钟后发生。

我们的网络服务消费者配置如下。

<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" />

现在,当我们询问第 3 方超时时,他们要求我们将服务器的 SO_TIMEOUT 设置为 0。

我知道我们可以为 https:connector 设置它,属性为 'serverSoTimeout="0"'。 我的问题是我们如何为 Webservice 消费者设置它?

【问题讨论】:

    标签: mule socket-timeout-exception


    【解决方案1】:

    这可以通过向您的网络服务端点添加一个参数来设置,如下所示: 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>
    

    【讨论】:

    • 它与 defaultResponseTimeout 有什么区别?
    • 我认为您的请求将在 16 分钟内超时,因为您的默认超时设置为 1000000 毫秒(大约 16 分钟)。如果您可以更改此全局设置,您可以这样做,或者您可以如上所述为每个端点处理它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    相关资源
    最近更新 更多