WebService之CXF快速入门(附Demo演示)

一、CXF概述

CXF是Apache旗下的一个开源的Web Services框架,全称为Apache CXFApache CXF = Celtix + Xfire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF
CXF 帮助我们构建和开发 Web Services ,它支持多种协议,比如:SOAP1.1、1.2XML/HTTPRESTful HTTPCORBA(Common Object Request Broker Architecture公共对象请求代理体系结构,早期语言使用的Web Services,如C、C++、C#语言)
CXF是基于SOA总线结构,依靠Spring完成模块的集成,实现SOA方式。
CXF可以灵活的部署:可以运行在TomcatJbossJetty(内置)、Weblogic等容器上。

总的来说,CXF是一个用来构建和开发Web Services的框架。

二、CXF下载、环境配置

1、访问Apache CXF官网下载CXF

官网地址http://cxf.apache.org/download.html

在这里插入图片描述
在这里插入图片描述

2、解压下载好的CXF压缩包

在这里插入图片描述
在这里插入图片描述

3、配置环境变量

①、Windows平台:

a、配置系统变量CXF_HOME= C:\apache-cxf-2.7.11
b、在Path变量中添加CXF_HOME%\bin
在这里插入图片描述

②、Mac/Linux平台:

考虑到有些人并不懂vim/vi编辑器,所以写的比较详细,大佬莫笑啊~哈哈

在终端中编辑.bash_profile隐藏的配置文件,命令vim .bash_profile
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置命令:

export CXF_HOME=/Users/hestyle/Software/apache-cxf-3.3.4
export PATH=$PATH:$CXF_HOME/bin

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
Mac配置Java环境变量:等待更新

三、CXF Demo演示

1、编写服务端Demo

①、新建一个java项目(普通java项目即可)

在这里插入图片描述
在这里插入图片描述

②、在项目根目录下创建lib文件夹,导入cxf的jar包

在这里插入图片描述
复制cxf解压文件夹下lib子文件夹下的所有文件到项目的lib文件夹下
在这里插入图片描述
将项目中的lib文件夹标记为Library
在这里插入图片描述

③、编写天气服务接口、实现类

在这里插入图片描述
WeatherService接口

package cn.hestyle.service;

import javax.jws.WebService;

/**
 * description: WeatherService天气服务接口
 *
 * @author hestyle
 * @version 1.0
 * @className CXF Project 01 Server->WeatherService
 * @date 2019-12-08 17:20
 **/
@WebService
public interface WeatherService {
    /**
     * 通过cityName查询天气
     * @param cityName 城市名
     * @return 该城市的天气
     */
    public String queryWeather(String cityName);
}

WeatherServiceImpl实现类

package cn.hestyle.service;

import cn.hestyle.service.WeatherService;

import javax.jws.WebService;

/**
 * description: WeatherService接口的实现类
 *
 * @author hestyle
 * @version 1.0
 * @className CXF Project 01 Server->WeatherServiceImpl
 * @date 2019-12-08 17:21
 **/
public class WeatherServiceImpl implements WeatherService {
    @Override
    public String queryWeather(String cityName) {
        String nowCityName = "武汉";
        String weatherStrOne = "晴,10~20°C,适合外出!";
        String weatherStrTwo = "阴,5~10°C,不宜外出!";
        if (cityName.equals(nowCityName)) {
            return cityName + weatherStrOne;
        } else {
            return cityName + weatherStrTwo;
        }
    }
}
④、编写WeatherServer天气服务发布类
package cn.hestyle.test;

import cn.hestyle.service.WeatherServiceImpl;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

import javax.jws.WebService;

/**
 * description: Weather发布服务器
 *
 * @author hestyle
 * @version 1.0
 * @className CXF Project 01 Server->WeatherServer
 * @date 2019-12-08 17:26
 **/
public class WeatherServer {
    public static void main(String[] args) {
        //1、创建服务工厂Bean
        JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();
        //2、设置服务实现对象
        factoryBean.setServiceBean(new WeatherServiceImpl());
        //3、设置服务发布地址,127.0.0.1为本地ip地址,8888为端口
        factoryBean.setAddress("http://127.0.0.1:8888/weather");
        //4、创建服务
        factoryBean.create();
        System.out.println("发布成功,请在浏览器中访问http://127.0.0.1:8888/weather?wsdl");
    }
}

执行类中的main方法,控制台输出:
在这里插入图片描述

⑤、浏览器访问http://127.0.0.1:8888/weather?wsdl

可以看到如下说明书
在这里插入图片描述
至此,天气服务Demo服务端编写完毕。

2、编写客户端Demo

\color{red}注意: 使用客户端期间,服务端需要一直保持运行!(虽然听上去是废话,可是很多新手还是手滑关了服务器,然后说教程错了。。。这锅我不被哈)

①、新建一个java项目(普通java项目即可)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

②、使用wsdl2java或wsimport命令生成客户端

选中客户端中的src目录,打开终端
在这里插入图片描述
执行命令wsdl2java http://127.0.0.1:8888/weather?wsdl
在这里插入图片描述
按道理是需要加一个路径参数,但是加路径会报错
在这里插入图片描述

③、在项目根目录下创建lib文件夹,导入cxf的jar包

在编写服务端时已经介绍过了,请上翻查看。
在这里插入图片描述

④、编写客户端调用代码
package cn.hestyle.test;

import cn.hestyle.service.WeatherService;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

/**
 * description: 客户端调用代码
 *
 * @author hestyle
 * @version 1.0
 * @className CXF Project 02 Client->Demo01
 * @date 2019-12-08 18:16
 **/
public class Demo01 {
    public static void main(String[] args) {
        //1、创建代理工厂
        JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();
        //2、设置 服务接口类型
        factoryBean.setServiceClass(WeatherService.class);
        //3、设置服务器地址,必须与服务器配置的额相同!!!
        factoryBean.setAddress("http://127.0.0.1:8888/weather?wsdl");
        WeatherService weather = factoryBean.create(WeatherService.class);
        System.out.println(weather.queryWeather("北京"));
    }
}

执行main方法,控制台输出:
在这里插入图片描述
至此,客户端Demo测试编写完毕!

以上就是WebService之CXF快速入门(附Demo演示)主要内容,点个赞呗~

发布了976 篇原创文章 · 获赞 230 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/qq_41855420/article/details/103446142