2012-08-08 109 views
0

我正在尝试为SPML searchRequest迭代器执行SOAP消息。我的终端正在使用位于IIS之上的Quest SPML Provider工具。Spring WebServiceTemplate持久连接

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

当通过随软件提供的UI或通过SoapUI完成时,我没有问题,但通过Spring实现时,我得到一个无效的ID。

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

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

非常感谢!

回答

1

messageSender是WebServiceTemplate用来通过选择的协议发送有效载荷的东西。如果是HTTP,则可以将其配置为使用HttpComponentsMessageSender,它使用支持持久HTTP连接(保持活动)的HttpClient

注意

  1. HTTP/1.1具有连接保持,但服务器可以决定请求的数目后,关闭或不支持保持活动。
  2. 即使JDK 6相关的类支持保持活跃,但你可以与HttpClient的启用池
+0

真棒,其实我已经开始寻找到这一点我自己,在编码了手动消息创建之中,等等。谢谢对于响应=) – dardo 2012-08-08 18:43:08

+0

@ Aravind,是否有一个工作示例显示如何在wstemplate上设置保持活动状态? – Espresso 2018-02-22 04:31:51