了解了webservice的基础知识之后,我们来编写一个服务端和客户端,进行测试。
服务端
先写一个接口:
@WebService public interface WebServiceI { //使用@WebMethod注解标注WebServiceI接口中的方法 @WebMethod String sayHello(String name); @WebMethod String save(String name,String pwd); }
再写它的实现类:
@WebService public class WebServiceImpl implements WebServiceI { @Override public String sayHello(String name) { System.out.println("WebService sayHello "+name); return "sayHello "+name; } @Override public String save(String name, String pwd) { System.out.println("WebService save "+name+", "+pwd); return "save Success"; } }
我建立的是spring boot 项目,在启动项里面发布:
@SpringBootApplication public class WebServiceApplication { public static void main(String[] args) throws ServletException{ new WebServiceApplication().init(); SpringApplication.run(WebServiceApplication.class, args); } public static void init() throws ServletException { //WebService的发布地址 //访问的时候需要在add后面加上?wsdl String address = "http://192.xxx.15.117:8088/WS_Server/WebService"; //发布WebService,WebServiceImpl类是WebServie接口的具体实现类 Endpoint.publish(address , new WebServiceImpl()); //使用JDK发布。 System.out.println("使用WebServicePublishServlet发布webservice成功!"); } }
启动项目,webservice服务端就发布成功了。
客户端
重新建立一个spring boot项目,cmd进入java目录,执行命令: wsimport -keep http://192.xxx.15.117:8088/WS_Server/WebService?wsdl ,会自动生成代码。
除了里面圆圈圈出来的是启动项,其他都是自动生成的。
建立一个controller:
@RestController public class Controller { @RequestMapping(value = "/sayHello") public String sayHello(){ WebServiceImplService factory = new WebServiceImplService(); //通过工厂生成一个WebServiceImpl实例,WebServiceImpl是wsimport工具生成的 WebServiceImpl wsImpl = factory.getWebServiceImplPort(); //调用WebService的sayHello方法 String resResult = wsImpl.sayHello("heqiyoujing"); return resResult; } @RequestMapping(value = "/save") public String save(){ WebServiceImplService factory = new WebServiceImplService(); //通过工厂生成一个WebServiceImpl实例,WebServiceImpl是wsimport工具生成的 WebServiceImpl wsImpl = factory.getWebServiceImplPort(); //调用WebService的sayHello方法 String resResult = wsImpl.save("heqiyoujing","123"); return resResult; } }
启动项目,访问接口:
http://localhost:9000/sayHello 返回:sayHello heqiyoujing
http://localhost:9000/save 返回:save Success
客户端也成功了。