一尘不染

SpringBoot SOAP Web服务动态WSDL生成不起作用如果从RequestPayload元素中删除请求后缀

spring-boot

我正在使用Spring Boot SOAP Webservice Sample项目创建SOAP
Web服务。如果我使用以下代码,则动态生成的WSDL将显示操作。

@PayloadRoot(namespace = NAMESPACE_URI, localPart = "AvailNotifRequest")
@ResponsePayload
public OTAHotelAvailNotifRS getAvailNotif(@RequestPayload AvailNotifRequest request) {

但是我需要request元素来像这样更改。

@PayloadRoot(namespace = NAMESPACE_URI, localPart = "OTAHotelAvailNotifRQ")
@ResponsePayload
public OTAHotelAvailNotifRS getOTAHotelAvailNotifRQ(@RequestPayload OTAHotelAvailNotifRQ request) {

我在此链接上发现了一个类似的问题Spring Webservice动态wsdl没有为架构元素生成消息)回答说我们需要在诸如 AvailNotifRequest之 类的请求元素后添加后缀Request, 但我想使用OTAHotelAvailNotifRQ 作为我的请求输入。如何使用此功能,因为在更改这样的请求输入时,我没有在wsdl中进行操作。


阅读 1301

收藏
2020-05-30

共1个答案

一尘不染

根据Spring-WS的官方文档

<dynamic- wsdl>通过使用约定从XSD架构构建WSDL。它遍历模式中找到的所有元素元素,并为所有元素创建一条消息。接下来,它将为所有以定义的请求或响应后缀结尾的消息创建WSDL操作。默认的请求后缀是Request;默认响应后缀为Response,尽管可以通过分别在<dynamic- wsdl />上设置requestSuffix和responseSuffix属性来更改它们。

换句话说,您可以在DefaultWsdl11Definition上使用setRequestSuffixsetResponseSuffix,以指定不同于默认值的请求和响应后缀。在上述情况下,例如:

wsdl11Definition.setRequestSuffix("RQ");
wsdl11Definition.setResponseSuffix("RS");
2020-05-30