最近在做招生迎新系统,然后学校就要求和财政收费系统打通。起初我觉得就是对接接口嘛,但是万万没想到用的居然是
WebService
,当我听到这个十分陌生的技术时我就知道要踩不少坑。(在我学Java的时候servlet
我们都觉得老的不行,更别说这个我连听都没听过的技术了)。下面是我使用SpringBoot
整合WebService
记录。
-
映入依赖
pom
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web-services</artifactId> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-spring-boot-starter-jaxws</artifactId> <version>3.4.4</version> </dependency>
-
创建
IDemoWebService
接口(传参方式类似mybatis,可以指定参数名,不指定参数名就用(arg0-argn)来代替)@WebService public interface IDemoWebService { /** * 测试第一个方法(无需自定义参数名) * * @param param1 参数1 * @param param2 参数2 * @param param3 参数3 * @return */ @WebMethod String testMethod01( @WebParam(targetNamespace = "http://webservice.demo.com/") String param1, @WebParam(targetNamespace = "http://webservice.demo.com/") String param2, @WebParam(targetNamespace = "http://webservice.demo.com/") String param3 ); /** * 测试第二个方法(指定参数名) * * @param param1 参数1 * @param param1 参数2 * @param param1 参数3 * @return */ @WebMethod String testMethod02( @WebParam(name = "param1", targetNamespace = "http://webservice.demo.com/") String param1, @WebParam(name = "param2", targetNamespace = "http://webservice.demo.com/") String param2, @WebParam(name = "param3", targetNamespace = "http://webservice.demo.com/") String param3, ); }
-
创建
DemoWebService
实现类@Service @WebService(name = "DemoWebService", targetNamespace = "http://webservice.demo.com/", endpointInterface = "com.hj.start.webservice.IDemoWebService") public class DemoWebService implements IDemoWebService { @Override public String demoMethod01(String param1, String param2, String param3) { return "demoMethod01:" + param1 + param2 + param3; } @Override public String demoMethod02(String param1, String param2, String param3) { return "demoMethod02:" + param1 + param2 + param3; } }
这里要注意
targetNamespace
必须是和目录对应
-
创建配置文件
WebServiceConfig
@Configuration public class WebServiceConfig { @Autowired private IDemoWebService demoWebService; @Bean(name = "cxfServlet") public ServletRegistrationBean cxfServlet(){ //这个地址可以随意修改,用于访问的前缀 return new ServletRegistrationBean(new CXFServlet(), "/webservice/*"); } @Bean(name = Bus.DEFAULT_BUS_ID) public SpringBus springBus(){ return new SpringBus(); } //有几个webservice类就建几个 @Bean(name = "demoWebserviceEndPoint") public Endpoint demoWebserviceEndPoint(){ EndpointImpl endpoint = new EndpointImpl(springBus(), demoWebService); endpoint.publish("/demo"); return endpoint; } }
-
测试访问
-
访问
http://localhost:9090/webservice/demo?wsdl
-
访问demoMethod01方法
-
访问demoMethod02方法
-
OK到这就可以正常的进行webservice的调用了,如有问题记得给我留言哦