Spring Boot整合webservice
- 前言
- 1.整合依赖
- 2.建立暴露接口
-
- 2.实现类
- 3.发布服务
- 4.查看
- 打完收工!
前言
工作中遇到的问题,由于下游系统属于第三方系统,使用的是
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"; } }
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.查看
这个时候就可以在
如下:
@Bean public Endpoint endpoint1(TestService testService) { EndpointImpl endpoint = new EndpointImpl(springBus(), testService); endpoint.publish("/TestService1"); return endpoint; }