一、CXF概述
CXF
是Apache旗下的一个开源的Web Services
框架,全称为Apache CXF
。Apache CXF
= Celtix
+ Xfire
,开始叫 Apache CeltiXfire
,后来更名为 Apache CXF
。
CXF 帮助我们构建和开发 Web Services
,它支持多种协议,比如:SOAP1.1、1.2
、XML/HTTP
、RESTful HTTP
、 CORBA
(Common Object Request Broker Architecture公共对象请求代理体系结构,早期语言使用的Web Services
,如C、C++、C#语言)
CXF
是基于SOA总线结构,依靠Spring
完成模块的集成,实现SOA方式。
CXF
可以灵活的部署:可以运行在Tomcat
、Jboss
、Jetty
(内置)、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
使用客户端期间,服务端需要一直保持运行!(虽然听上去是废话,可是很多新手还是手滑关了服务器,然后说教程错了。。。这锅我不被哈)
①、新建一个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演示)主要内容,点个赞呗~