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

Rak*_*esh 5 soap wsdl web-services spring-ws spring-boot

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

@PayloadRoot(namespace = NAMESPACE_URI, localPart = "AvailNotifRequest")
@ResponsePayload
public OTAHotelAvailNotifRS getAvailNotif(@RequestPayload AvailNotifRequest request) {
Run Code Online (Sandbox Code Playgroud)

但我需要这样的变更请求元素.

@PayloadRoot(namespace = NAMESPACE_URI, localPart = "OTAHotelAvailNotifRQ")
@ResponsePayload
public OTAHotelAvailNotifRS getOTAHotelAvailNotifRQ(@RequestPayload OTAHotelAvailNotifRQ request) {
Run Code Online (Sandbox Code Playgroud)

我在这个链接上发现了一个类似的问题Spring Web服务动态wsdl没有生成架构元素的消息答案说我们需要在请求元素之后添加后缀Request,如 AvailNotifRequest,但我想使用OTAHotelAvailNotifRQ作为我的请求输入.我如何使用它,因为当我更改这样的请求输入时,我没有在wsdl中获取操作.

Cod*_*und 1

根据Spring-WS 官方文档

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

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

wsdl11Definition.setRequestSuffix("RQ");
wsdl11Definition.setResponseSuffix("RS");
Run Code Online (Sandbox Code Playgroud)