spring集成中如何调用SOA Webservice操作方法

问题描述

遗憾的是,关于如何调用 SOAP 网络服务的示例并不多。文档中的示例非常模糊,尤其是对于新学习者。

这是场景。 我有一个有很多操作的网络服务。 在 xml 配置中,我有一个转换器,它从消息的有效负载提取信息并将数据存储在 POJO 中。目前,转换器正在使用来自 POJO 的数据构建肥皂请求。最后,转换器返回并在 requestChannel 中放置一条消息,该消息只是作为字符串的soap请求。

我正在调用 web 服务,就像文档中的示例一样;像这样的东西。

<int-ws:outbound-gateway id="invokeService"
                 request-channel="requestChannel"
                 reply-channel="responseChannel"
                 uri="http://[host]:[port]/app/service" />

我收到此错误SoapFaultClientException:未知方法

我想知道如何调用将 POJO 数据传递给soap 请求的soap web 服务操作。 Web 服务操作(或方法)具有字符串参数。

也在寻找关于 Spring 集成的好的教程或书籍。

提前致谢。

解决方法

Spring Integration WebServices 支持只不过是 Spring WS 之上的消息通道适配器实现。因此,如果您对如何构建和接收 SOAP 消息有疑问,请咨询该项目:https://docs.spring.io/spring-ws/docs/current/reference/html/。您可能需要提供 SOAP 操作标头:https://docs.spring.io/spring-integration/docs/current/reference/html/ws.html#ws-message-headers

另见相应示例:https://github.com/spring-projects/spring-integration-samples/tree/main/basic/ws-outbound-gateway

对于现有的 POJO,您可以考虑使用 Marshaller 方法。 JAXB 是一个很好的基于 WSDL 的注释和生成。