use*_*372 6 soap wsdl spring-boot
我使用以下指南创建了一个简单的spring-boot SOAP Web服务:https : //spring.io/guides/gs/production-web-service/
我正在将其部署到云服务中,但是在其前面将具有API管理层。
我希望WSDL使用API管理层的URL。(本质上是对地址进行硬编码。)
我尝试了两种方法:
使用DefaultWsdl11Definition.setLocationUri()
@Bean(name = "countries")
public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema countriesSchema) {
DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
wsdl11Definition.setPortTypeName("CountriesPort");
wsdl11Definition.setLocationUri("http://example.com/ws");
wsdl11Definition.setTargetNamespace("http://spring.io/guides/gs-producing-web-service");
wsdl11Definition.setSchema(countriesSchema);
return wsdl11Definition;
}
Run Code Online (Sandbox Code Playgroud)使用SimpleWsdl11Definition.setWsdl()指向手动编辑的WSDL
@Bean(name = "countries")
public SimpleWsdl11Definition defaultWsdl11Definition(XsdSchema countriesSchema) {
SimpleWsdl11Definition wsdl11Definition = new SimpleWsdl11Definition();
wsdl11Definition.setWsdl(new ClassPathResource("countries.wsdl")); //this WSDL was edited to have the path I want
return wsdl11Definition;
}
Run Code Online (Sandbox Code Playgroud)我正在与Maven合作。在这两种情况下,应用程序托管的WSDL都将其主机名替换为其运行的服务器,例如http:// localhost:8080 /,然后使用其余的URI。
<wsdl:service name="CountriesPortService">
<wsdl:port binding="tns:CountriesPortSoap11" name="CountriesPortSoap11">
<soap:address location="http://localhost:8080/ws"/>
</wsdl:port>
</wsdl:service>
Run Code Online (Sandbox Code Playgroud)
如何设置/覆盖主机名部分
小智 4
我认为您正在Web 服务配置类的messageDispatcherServlet方法中使用setTransformWsdlLocations(true) 。此设置将根据其运行的环境转换 URL。删除此行,以便它将采用默认设置 fals 并且不会覆盖。
| 归档时间: |
|
| 查看次数: |
753 次 |
| 最近记录: |