从 Spring 集成执行连续调用时,SOAP 操作是否保持不变?

Does SOAP Action remain the same when performing successive calls from Spring Integration?

我开发了一条 Spring 集成的路线。在此路由中,我们通过 inbound-gateway 接收 JSON 有效载荷,沿途执行一些转换和路由,并使用 int-ws:outbound-gateway 进行三个连续的 SOAP 调用(到 Tibco AMX BPM)。每个 outound-gateway 前面都有一个 int-ws:header-enricher 来设置 SOAP 操作:

<int-ws:header-enricher input-channel="getWorkListItemsRequest1" output-channel="getWorkListItemsRequest2">
    <int-ws:soap-action value="getWorkListItems" />
</int-ws:header-enricher>

在新环境中调试应用程序的意外行为时,我们跟踪了包括 HTTP headers 在内的 SOAP 调用,发现 SOAP 操作 header 为第一个调用设置正确接下来的两次调用保持不变(系统表现得好像忽略了第二个和第三个 header-enricher)。

有什么我明显遗漏或误解的吗?

提前致谢

您需要设置覆盖标志...

<int-ws:header-enricher input-channel="getWorkListItemsRequest1" output-channel="getWorkListItemsRequest2">
    <int-ws:soap-action value="getWorkListItems" overwrite="true" />
</int-ws:header-enricher>

<int-ws:header-enricher input-channel="getWorkListItemsRequest1" output-channel="getWorkListItemsRequest2"
         default-overwrite="true">
    <int-ws:soap-action value="getWorkListItems" />
</int-ws:header-enricher>