0

我正在尝试为 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 保持连接活动,直到我完成对结果的迭代?还是我离群索居,需要寻求不同的途径。

非常感谢!

4

1 回答 1

1

messageSender是 WebServiceTemplate 用来通过选择的协议发送有效负载的内容。如果是 HTTP,那么您可以将其配置为使用HttpComponentsMessageSender,它使用支持持久 HTTP 连接(保持活动状态)的HttpClient 。

笔记

  1. HTTP/1.1 有连接 keep-alive,但服务器可以在多次请求后决定关闭它或不支持 keep-alive。
  2. 甚至 JDK 6 相关的类也支持 keep-alive,但您可以使用 HttpClient 启用池
于 2012-08-08T18:33:18.617 回答