cxf发布webservice服务及客户端的调用

一、下载cxf

地址:http://cxf.apache.org/download.html   选择适合自己的版本

二、配置环境变量

将下载好包解压,然后配置如下的环境变量

CXF_HOME = C:\tomcat\apache-cxf-3.3.4

Path = %CXF_HOME%\bin

三、CXF服务端的第一个例子

        1、创建一个普通的Java项目,导入如图的jar包,将该目录下的jar都导入到项目中

  2、创建一个服务接口,如下所示:

package my;

import javax.jws.WebService;

@WebService

public interface WeatherInterface

{

    public String getWeather(String city);

    public String[] getCities(String pro);

}

  3、创建接口的实现类,如下所示:

  package my;

public class WeatherInterfaceImpl implements WeatherInterface {

    @Override

    public String getWeather(String city) {

        if("广州".equals(city))

        {

            return "天气晴,未来几天都是晴天。";

        }

        return "该城市暂未开通";

    }

    @Override

    public String[] getCities(String pro) {

        if ("广东".equals(pro))

        {

            return new String[]{"广州" , "深圳" , "佛山"};

        }

        return new String[]{"该省暂未开通"};

    }

}

4、发布服务,在main方法写入如下代码,然后执行main方法

   import my.WeatherInterfaceImpl;

import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

public class Main {

    public static void main(String[] args) {

        System.out.println("开始发布!");

        //发布服务

        //1、创建工厂bean

        JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();

        //2、设置服务对象

        factoryBean.setServiceBean(new WeatherInterfaceImpl());

        //3、设置服务发布地址

        factoryBean.setAddress("http://127.0.0.1:9090/weather");

        //4、创建安服务

        factoryBean.create();

        System.out.println("发布成功!");

    }

}

5、在浏览器访问我们的服务

在浏览器地址栏打开地址:http://127.0.0.1:9090/weather?wsdl

返回如图所示,则说明服务创建成功

到此我们的服务端已经创建成功。

四、cxf的客户端

      1、创建一个普通的Java项目

2、生成客户端代码

     (1)在dows窗口进入src目录,如图所示

   

(2)在dows窗口执行;wsdl2java -d . http://127.0.0.1:9090/weather?wsdl

          然后在src目录先生成如下文件:

     (3)在main方法中调用,如下代码

package my;

import java.util.List;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

public class Main

{

public static void main(String[] args)

{

System.out.println("hello world!");

//1、创建代理工厂

JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();

//2、设置接口

factoryBean.setServiceClass(WeatherInterface.class);

//3、设置地址

factoryBean.setAddress("http://127.0.0.1:9090/weather?wsdl");

//4、创建服务

WeatherInterface ws = factoryBean.create(WeatherInterface.class);

String str = ws.getWeather("广州");

List<String> citis = ws.getCities("广东");

System.out.println(str);

System.out.println(citis);

}

}

   执行之后,出现如图结果,说明调用成功

到此,cxf发布webservice已经做好了。