Web Services Sping Boot Web服务- WSDL生成

wb1gzix0  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(208)

我已遵循此教程:https://spring.io/guides/gs/producing-web-service/,运行良好,但是,我没有得到它的一部分。演示应用程序接受一个XSD文件,并从它生成一个WSDL。我的理解是,XSD文件是WSDL的子集。Spring框架如何仅基于XSD文件来找出缺少的信息?

sf6xfgos

sf6xfgos1#

您是正确的,WSDL包含了更多的信息。但是从xsd中提取了一些基本信息,比如可以使用SOAP服务的请求的名称以及它应该接受的参数。
然后Spring使用注解处理来处理需要附加到WSDL中的更多信息

@PayloadRoot(namespace = NAMESPACE_URI, localPart = "getCountryRequest")
@ResponsePayload
public GetCountryResponse getCountry(@RequestPayload GetCountryRequest request)

Spring还从bean配置中提取需要附加到WSDL中的信息

@Bean(name = "countries")
public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema countriesSchema) {
    DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
    wsdl11Definition.setPortTypeName("CountriesPort");
    wsdl11Definition.setLocationUri("/ws");
    wsdl11Definition.setTargetNamespace("http://spring.io/guides/gs-producing-web-service");
    wsdl11Definition.setSchema(countriesSchema);
    return wsdl11Definition;
}

包含在WSDL中且未在项目中配置的所有其他内容都将作为Spring自身的默认配置应用,如果允许对某些元素这样做的话。
使用此方法的一个原因是,通过xsd,您既可以使用WSDL的一些配置,也可以创建处理请求和响应所需的java域对象。

相关问题