cxf方式实现WebService的简单实例

cxf实现WebService的发布和调用简单实例。

1、准备工作:下载cxf  http://cxf.apache.org/download.html

  lib文件下的WHICH_JARS文件列出了各用途下所需的jar包。

  bin目录下存放运行文件。

2、服务端:先新建接口和相关的实现类。发布的服务是接口的方式。

  代码如下

 1 package com.liujf;
 2 
 3 import javax.jws.WebParam;
 4 import javax.jws.WebService;
 5 
 6 @WebService
 7 public interface IWebService
 8 {
 9     String sayHi(@WebParam(name = "text") String text);
10 }
 1 package com.liujf;
 2 
 3 import javax.jws.WebService;
 4 
 5 @WebService(endpointInterface = "com.liujf.IWebService", serviceName = "helloTest")
 6 public class WebServiceImpl implements IWebService
 7 {
 8     
 9     @Override
10     public String sayHi(String text)
11     {
12         // TODO Auto-generated method stub
13         return "Welcome " + text;
14     }
15     
16 }

  然后建立发布的方法:

 1 package com.liujf;
 2 
 3 import javax.xml.ws.Endpoint;
 4 
 5 public class ServicePublish
 6 {
 7     public static void main(String[] args)
 8     {
 9         System.out.println("web service start");
10         WebServiceImpl implementor = new WebServiceImpl();
11         String address = "http://192.168.16.101:8080/helloTest";
12         Endpoint.publish(address, implementor);
13         System.out.println("web service started");
14     }
15 }

  运行发布代码的main方法,Web Serice服务即发布成功。

  浏览器输入http://192.168.16.101:8080/helloTest?wsdl 可以打开wsdl文件。

3、客户端:首先需要把服务相关的接口类导入到本地。

  调用bin目录下的wsdl2java.bat文件:in>wsdl2java http://192.168.16.101:8080/helloTest?wsdl

  生成对应的java类,拷贝到客户端工程目录下。然后可编写调用服务代码进行测试。

  

 1 import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
 2 
 3 import com.liujf.IWebService;
 4 
 5 public class WebServiceTest
 6 {
 7     public static void main(String[] args)
 8     {
 9         // 创建WebService客户端代理工厂
10         JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
11         // 注册WebService接口
12         factory.setServiceClass(IWebService.class);
13         // 设置WebService地址
14         factory.setAddress("http://192.168.16.101:8080/helloTest");
15         IWebService webService = (IWebService)factory.create();
16         System.out.println("invoke webservice...");
17         System.out.println("message context is:" + webService.sayHi("LJF"));
18     }
19 }

  控制台打印结果如下:

  

1 invoke webservice...
2 message context is:Welcome LJF

  发布和调用过程完成。

原文地址:https://www.cnblogs.com/moleme/p/5024059.html