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

时间:2016-08-23 06:43:15

标签: web-services soap spring-boot wsdl spring-ws

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

catch

但是我需要像这样改变请求元素。

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

我在此链接上发现了一个类似的问题Spring web service dynamic wsdl not generating message for a schema element回答说我们需要在请求元素之后添加后缀Request,例如 AvailNotifRequest ,但我想使用 OTAHotelAvailNotifRQ 作为我的请求输入。 我如何使用它,因为当我更改这样的请求输入时,我没有在wsdl中获取操作。

1 个答案:

答案 0 :(得分:1)

根据official Spring-WS documentation

  

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

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

wsdl11Definition.setRequestSuffix("RQ");
wsdl11Definition.setResponseSuffix("RS");