如何在Spring Boot应用程序中配置了两个不同的SOAP Web服务端点
在Spring Boot应用程序中配置了两个不同的SOAP Web服务端点
新建一个CustomMessageDispatcherServlet类,以扩展以下MessageDispatcherServlet类,
import org.springframework.ws.transport.http.MessageDispatcherServlet;
import javax.servlet.http.HttpServletRequest;
public class CustomMessageDispatcherServlet extends MessageDispatcherServlet {
@Override
protected String transformWsdlLocation(HttpServletRequest request, String wsdlLocation) {
String requestUri = request.getRequestURI();
if (requestUri.contains("/WebservicesConnector/services/countries")) {
return "countries.wsdl";
} else if (requestUri.contains("/FinancingService/FinancingUpdate.asmx")) {
return "kinsai.wsdl";
}
return super.transformWsdlLocation(request, wsdlLocation);
}
}messageDispatcherServlet
@Bean
public ServletRegistrationBean<CustomMessageDispatcherServlet> messageDispatcherServlet() {
CustomMessageDispatcherServlet servlet = new CustomMessageDispatcherServlet();
servlet.setApplicationContext(applicationContext);
servlet.setTransformWsdlLocations(true);
return new ServletRegistrationBean<>(servlet, "/ws/*");
}扩展:基于SpringBoot 的SOAP WebService实现
一、使用postman工具调用服务接口
成功启动springboot应用后,使用postman新建POST请求,地址: http://localhost:8080/soap/userManagement
正文body选择raw,XML格式。
headers填入如下键值对:

其中xlms字段是 WSDL中的namespace字段。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.tmy.example.org/">
<soapenv:Header/>
<soapenv:Body>
<ser:getUserByName>
<name>Jerry</name>
</ser:getUserByName>
</soapenv:Body>
</soapenv:Envelope>发送请求,返回了一个User类 。
至此,webservice SOAP服务发布测试成功。

二、使用客户端测试接口
新建客户端模块,maven依赖和服务端相同。
实体类User、服务接口UserManagement.java和服务端保持一致。
客户端结构如下:

测试类如下:
@SpringBootApplication
public class WebserviceClientApplication {
public static void main(String[] args) {
SpringApplication.run(WebserviceClientApplication.class, args);
JaxWsDynamicClientFactory dcflient=JaxWsDynamicClientFactory.newInstance();
Client client=dcflient.createClient("http://localhost:8080/soap/userManagement?wsdl");//http://localhost:8080/soap/userManagement
System.out.println("client= "+client);
try{
//namespace= http://service.tmy.example.org/
QName opname=new QName("http://service.tmy.example.org/","getUserByName");
Object[] objects=client.invoke(opname,"Jerry");//getUserByName
System.out.println("getUserByName 调用结果:"+objects[0].toString());
}catch (Exception e){
e.printStackTrace();
}
}
}启动服务端后,运行客户端,返回了一个User类,说明客户端测试成功。

到此这篇关于在Spring Boot应用程序中配置了两个不同的SOAP Web服务端点的文章就介绍到这了,更多相关Spring Boot应用程序配置了两个不同的SOAP Web服务端点内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
ProtoStuff不支持BigDecimal序列化及反序列化详解
这篇文章主要为大家介绍了ProtoStuff不支持BigDecimal序列化/反序列化,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-08-08
SpringBoot读取properties中文乱码解决方案
本文主要介绍了在Spring Boot中读取带有中文字符串的application.properties文件时遇到乱码问题的解决方案,具有一定的参考价值,感兴趣的可以了解一下2024-12-12
Java读取resources中资源文件路径以及jar中文件无法读取的解决
这篇文章主要介绍了Java读取resources中资源文件路径以及jar中文件无法读取的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-05-05
SpringBoot使用AOP+注解实现简单的权限验证的方法
这篇文章主要介绍了SpringBoot使用AOP+注解实现简单的权限验证的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-05-05


最新评论