Spring WebServiceTemplate持久连接

时间:2012-08-08 17:47:49

标签: spring soap spring-ws

我正在尝试为SPML searchRequest迭代器执行SOAP消息。我的端点正在使用位于IIS之上的Quest SPML Provider工具。

问题是,我执行搜索,它返回结果和迭代器ID。您获取此迭代器ID并发出另一个请求(这次是IteratorRequest),Web服务将返回下一组项目。

当通过软件提供的UI或通过SoapUI完成此操作时,我没有任何问题,但是当通过Spring实现时,我得到了无效的ID。

经过一番挖掘后,我发现这个https://support.quest.com/SolutionDetail.aspx?id=SOL76284表明当连接或会话丢失到端点时,迭代器将变为无效。

我的问题是,有没有办法强制WebServiceTemplate.marshalSendAndReceive保持连接活着,直到我完成迭代结果?或者我是offbase,需要追求不同的途径。

非常感谢!

1 个答案:

答案 0 :(得分:1)

messageSender是WebServiceTemplate用于通过所选协议发送有效负载的内容。如果是HTTP,则可以将其配置为使用HttpComponentsMessageSenderHttpClient使用支持持久HTTP连接的{{3}}(保持活动状态)。

注意

  1. HTTP / 1.1具有连接保持活动状态,但服务器可以决定在发出多个请求后关闭它,或者不支持keep-alive。
  2. 即使JDK 6相关类支持keep-alive,但您可以使用HttpClient
  3. 启用池