Web Service 之JAX-WS 与CXF实现

  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项目不要停掉,否则这边会报错:

  

转载于:https://www.cnblogs.com/fx-blog/p/6113019.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值