Web Service的实现方式有很多种,本篇介绍的是基于JAX-WS(纯Java)实现的,然后借由CXF工具生成Javabean。
第一步:创建一个Java工程,编写CalService接口,此接口就是提供Web服务的接口。
1 package com.fx.inf; 2 3 import javax.jws.WebMethod; 4 import javax.jws.WebService; 5 6 //标记服务端点接口(SEI) 7 @WebService 8 public interface CalService { 9 10 //应用于服务器服务端点接口(SEI)上的方法-求和的方法 11 @WebMethod 12 public double add(double i , double j ); 13 14 //应用于服务器服务端点接口(SEI)上的方法-求差的方法 15 @WebMethod 16 public double sub(double i , double j ); 17 18 //应用于服务器服务端点接口(SEI)上的方法-求积的方法 19 @WebMethod 20 public double mul(double i , double j ); 21 22 //应用于服务器服务端点接口(SEI)上的方法-求商的方法 23 @WebMethod 24 public double div(double i , double j ); 25 26 }
第二步:编写接口的实现类CalServiceImpl。
1 package com.fx.inf.impl; 2 3 import javax.jws.WebMethod; 4 import javax.jws.WebService; 5 6 import com.fx.inf.CalService; 7 8 //endpointInterface表示该类必须实现此接口的所有方法,serviceName表示web service的服务名称 9 @WebService(endpointInterface="com.fx.inf.CalService",serviceName="CalService") 10 public class CalServiceImpl implements CalService { 11 12 @Override 13 @WebMethod 14 public double add(double i, double j) { 15 // TODO Auto-generated method stub 16 return i + j; 17 } 18 19 @Override 20 @WebMethod 21 public double sub(double i, double j) { 22 // TODO Auto-generated method stub 23 return i - j; 24 } 25 26 @Override 27 @WebMethod 28 public double mul(double i, double j) { 29 // TODO Auto-generated method stub 30 return i * j; 31 } 32 33 @Override 34 @WebMethod 35 public double div(double i, double j) { 36 // TODO Auto-generated method stub 37 if (j != 0 ) { 38 return i / j; 39 }else{ 40 return 0; 41 } 42 } 43 44 }
第三步:编写测试方法,发布该服务。
1 package com.fx.test; 2 3 import javax.xml.ws.Endpoint; 4 5 import com.fx.inf.CalService; 6 import com.fx.inf.impl.CalServiceImpl; 7 8 public class CalServiceTest { 9 10 public static void main(String[] args) { 11 System.out.println("--->Web Service Start"); 12 13 CalService cal = new CalServiceImpl(); 14 String address = "http://localhost:8888/cal"; 15 //发布此服务 16 Endpoint.publish(address, cal); 17 } 18 19 }
运行该Test,发布成功:
第四步:打开一个浏览器,输入http://localhost:8888/cal?wsdl,得到一些信息,这便是wsdl文件:
借用CXF工具(CXF的bin目录下有一些指令,可以将wsdl文件自动转换为Javabean文件),将wsdl编译为Javabean文件:
第五步:将得到的文件拷贝到一个新的Java项目下:
编写测试类:
1 package com.fx.test; 2 3 import com.fx.inf.CalService; 4 5 public class CalTest { 6 7 public static void main(String[] args) { 8 9 com.fx.inf.impl.CalService cal = new com.fx.inf.impl.CalService(); 10 11 CalService calSer = cal.getCalServiceImplPort(); 12 13 System.out.println("--->add:" + calSer.add(1, 2)); 14 System.out.println("--->sub:" + calSer.sub(1, 2)); 15 System.out.println("--->mul:" + calSer.mul(1, 2)); 16 System.out.println("--->div:" + calSer.div(1, 2)); 17 18 } 19 20 }
运行,得到结果:
ps:这边一定要注意,之前发布服务的那个java项目不要停掉,否则这边会报错: