我正在使用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中进行操作。
根据Spring-WS的官方文档:
<dynamic- wsdl>通过使用约定从XSD架构构建WSDL。它遍历模式中找到的所有元素元素,并为所有元素创建一条消息。接下来,它将为所有以定义的请求或响应后缀结尾的消息创建WSDL操作。默认的请求后缀是Request;默认响应后缀为Response,尽管可以通过分别在<dynamic- wsdl />上设置requestSuffix和responseSuffix属性来更改它们。
<dynamic- wsdl>
<dynamic- wsdl />
换句话说,您可以在DefaultWsdl11Definition上使用setRequestSuffix和setResponseSuffix,以指定不同于默认值的请求和响应后缀。在上述情况下,例如:
setRequestSuffix
setResponseSuffix
wsdl11Definition.setRequestSuffix("RQ"); wsdl11Definition.setResponseSuffix("RS");