如何在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服务端点内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
spring boot+自定义 AOP 实现全局校验的实例代码
最近公司重构项目,重构为最热的微服务框架 spring boot, 重构的时候遇到几个可以统一处理的问题。这篇文章主要介绍了spring boot+自定义 AOP 实现全局校验 ,需要的朋友可以参考下2019-04-04Java中StringUtils工具类进行String为空的判断解析
这篇文章主要介绍了Java中StringUtils工具类进行String为空的判断解析,具有一定借鉴价值,需要的朋友可以参考下2018-01-01关于服务网关Spring Cloud Zuul(Finchley版本)
这篇文章主要介绍了关于服务网关Spring Cloud Zuul(Finchley版本),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-03-03IDEA安装lombok插件设置Enable Annotation Processing后编译依然报错解决方法
这篇文章主要介绍了IDEA安装lombok插件设置Enable Annotation Processing后编译依然报错解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-04-04
最新评论