本文介绍: 工作中遇到的问题,由于下游系统属于第三方系统,使用的是,同时也在开发,虽然也发布了一套webservice测试环境,但是我们相同的报文,测试10次能有个50的成功率。而且由于我们特殊的业务要求,测试环境不能单单只请求下游系统的测试环境。所以需要建造一个挡板,暂时mock数据,也可以满足特殊业务要求。
前言
工作中遇到的问题,由于下游系统属于第三方系统,使用的是soap webservice
,同时也在开发,虽然也发布了一套webservice
测试环境,但是我们相同的报文,测试10次能有个50的成功率。而且由于我们特殊的业务要求,测试环境不能单单只请求下游系统的测试环境。所以需要建造一个挡板,暂时mock
数据,也可以满足特殊业务要求。
1.整合依赖
在网上查找资料的时候一件很神奇的事情,
Spring boot
其实是提供了Webservice
的相关依赖的,但是看大家使用的很少,反而使用的是cxf-spring-boot-starter-jaxws
,先紧跟潮流,后面再研究一下Spring boot
提供的这个有什么问题
- 依赖,这里使用gradle,maven就根据‘:’拆一下就好了。
implementation('org.apache.cxf:cxf-spring-boot-starter-jaxws:3.6.2')
2.建立暴露接口
@WebService(
name = "TestService", // 暴露服务名称
targetNamespace = "http://localhost:8080/"// 命名空间,一般是接口的包名倒序
)
public interface TestService {
@WebMethod
String test(@XmlElement(
name = "requestXml",
required = true,
nillable = true
) String requestXml) throws Exception;
}
XmlElement注解可以给arg生成一个别名,让服务认识这个参数,不加这个注解默认是arg0。
2.实现类
代码如下:
@org.springframework.stereotype.Service
@WebService(serviceName = "TestService", // 与接口中指定的name一致, 都可以不写
targetNamespace = "http://localhost:8080/", // 与接口中的命名空间一致,一般是接口的包名倒,都可以不用写
endpointInterface = "com.test.TestService" // 接口类全路径
)
public class TestServiceImpl implements TestService {
@Override
public String test(String requestXml) {
return "test";
}
}
@org.springframework.stereotype.Service
是spring
的接口
3.发布服务
代码如下:
@Configuration
public class WebServiceConfiguration {
@Bean("cxfServletRegistration")
public ServletRegistrationBean<CXFServlet> dispatcherServlet() {
return new ServletRegistrationBean<>(new CXFServlet(),"/soap/*");
}
@Bean(name = Bus.DEFAULT_BUS_ID)
public SpringBus springBus() {
return new SpringBus();
}
@Bean
public Endpoint endpoint(TestService testService) {
EndpointImpl endpoint = new EndpointImpl(springBus(), testService);
endpoint.publish("/TestService");
return endpoint;
}
}
4.查看
这个时候就可以在localhost:8080/soap/TestService?wsdl
查看了。由于我是工作的不方便展示,这个就记录一下好了。如果想再发布一个,就再添加一个Endpoint
如下:
@Bean
public Endpoint endpoint1(TestService testService) {
EndpointImpl endpoint = new EndpointImpl(springBus(), testService);
endpoint.publish("/TestService1");
return endpoint;
}
打完收工!
原文地址:https://blog.csdn.net/qq_37759895/article/details/135753357
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_60831.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。