1.什么是cxf

Cxf,apache下的webservice的开源框架。
Apache CXF = Celtix + Xfire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF 了,以下简称为 CXF。Apache CXF 是一个开源的 web Services 框架,CXF 帮助您构建和开发 web Services ,它支持多种协议,比如:SOAP1.1,1,2、XML/HTTP、RESTful HTTP 或者 CORBA。
Cxf是基于SOA总线结构,依靠spring完成模块的集成,实现SOA方式。

2.环境配置

下载地址:
http://cxf.apache.org/download.html
环境变量 :
CXF_HOME=cxf的目录
PATH = PATH;PATH;CXF_HOME\bin;

3.第一个程序

  • 在客户端和服务器端都要导入cxf的lib包

- 第一步写sei及其实现

@WebService(targetNamespace="http://weather.itcast.cn/",//指定 wsdl的命名空间name="WeatherInterface",//指定portType的名称portName="WeatherInterfacePort",//指定port的名称serviceName="WeatherService"//服务视图的名称//endpointInterface="cn.itcast.ws.service.WeatherInterface2"//指定哪个接口中方法要发布成webservice服务,接口中加上@webservice注解)
@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)
public interface WeatherInterface {//查询三天天气public @WebResult(name="result") List<WeatherModel> queryWeather(@WebParam(name="cityName") String cityName);}
public class WeatherInterfaceImpl implements WeatherInterface {@Overridepublic  List<WeatherModel> queryWeather(String cityName) {//构造三天天气List<WeatherModel> list = new ArrayList<WeatherModel>();Calendar calendar = Calendar.getInstance();int day = calendar.get(Calendar.DATE);WeatherModel weatherModel_1  =new WeatherModel();weatherModel_1.setDetail("晴");weatherModel_1.setData(new Date());weatherModel_1.setTemperature_max(5);weatherModel_1.setTemperature_min(-6);WeatherModel weatherModel_2  =new WeatherModel();weatherModel_2.setDetail("阴");calendar.set(Calendar.DATE, day+1);weatherModel_2.setData(calendar.getTime());weatherModel_2.setTemperature_max(10);weatherModel_2.setTemperature_min(-3);WeatherModel weatherModel_3  =new WeatherModel();weatherModel_3.setDetail("晴");calendar.set(Calendar.DATE, day+2);weatherModel_3.setData(calendar.getTime());weatherModel_3.setTemperature_max(2);weatherModel_3.setTemperature_min(-9);list.add(weatherModel_1);list.add(weatherModel_2);list.add(weatherModel_3);return list;}}

- 第二步:推送服务

public class WeatherServer {public static void main(String[] args) {//使用jaxWs发布soap协议的webserviceJaxWsServerFactoryBean jaxWsServerFactoryBean = new JaxWsServerFactoryBean();//指定 webservice地址jaxWsServerFactoryBean.setAddress("http://127.0.0.1:12345/weath");//指定 porttypejaxWsServerFactoryBean.setServiceClass(WeatherInterface.class);//指定服务类对象jaxWsServerFactoryBean.setServiceBean(new WeatherInterfaceImpl());//发布服务jaxWsServerFactoryBean.create();}}

然后在浏览器中输入
http://127.0.0.1:12345/weath?wsdl就能看到说明文档

第三步 利用cxf工具自动生成调用服务的代码

wsdl2java -d xxx http://127.0.0.1:12345/weath?wsdl
  • 第四步 编写客户端调用服务
package cn.itcast.weather;import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.List;import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;public class WeathClient3 {public static void main(String[] args) {JaxWsProxyFactoryBean jaxWsProxyFactoryBean=new JaxWsProxyFactoryBean();jaxWsProxyFactoryBean.setAddress("http://127.0.0.1:12345/weath?wsdl");jaxWsProxyFactoryBean.setServiceClass(WeatherInterface.class);WeatherInterface weatherInterface = (WeatherInterface) jaxWsProxyFactoryBean.create();// 调用portType方法List<WeatherModel> list = weatherInterface.queryWeather("郑州");for (WeatherModel weatherModel : list) {System.out.println(weatherModel.getDetail());Date date = weatherModel.getData().toGregorianCalendar().getTime();System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(date));System.out.println(weatherModel.getTemperatureMax());System.out.println(weatherModel.getTemperatureMin());}}
}

结果

晴
2017-05-27
5
-6
阴
2017-05-28
10
-3
晴
2017-05-29
2
-9

cxf环境搭建与第一个项目相关推荐

  1. 基于PHPEnv的本地环境搭建—PHP第一个项目:HelloWorld(从安装到运行)

    1.安装软件 编程工具:Notepad++ 运行环境:phpEnv 2.用phpEnv建立本地运行环境 (1)官方下载phpEnv,运行phpEnv,启动服务.服务启动之后,apache和mysql变 ...

  2. 代驾APP_第一章_项目环境搭建_第一节

    代驾APP_第一章_项目环境搭建 文章目录 代驾APP_第一章_项目环境搭建 1-1 创建根项目 一.创建SpringBoot项目 二.覆盖pom.xml文件 1-2 创建根项目 一.创建公共模块 二 ...

  3. Flutter环境搭建、运行gallary项目

    Flutter环境搭建.运行gallary项目 主体步骤 1.从github clone flutter的sdk, git clone -b beta https://github.com/flutt ...

  4. Dart Server开发环境搭建及新建运行项目

    Dart Server开发环境搭建及新建运行项目 开发环境的搭建 1. 下载Dart SDK 2. 下载开发工具 3. 创建Dart Server项目 Dart除了可以使用Flutter进行移动应用开 ...

  5. 程序猿编程课堂 Python学习之入门篇1:环境搭建与第一个程序

    前言: Python作为目前比较热门的编程语言,其简单和简洁的语法使它成为一种非常好的通用编程语言,它是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),并且随着版本的不断更新和 ...

  6. 人工智能运行环境linux,Intel OpenVINO 人工智能推论环境搭建 (Linux) 第一章

    一· ubunbu18.04操作系统环境安装. 快捷安装Ubuntu8.04 二· OpenVINO 针对 Ubunbu18.04运行环境依赖安装. 由于cn.archive.ubuntu.com,在 ...

  7. ReactNative入门(一)——环境搭建及第一个RN项目—HelloWorld

    ReactNative入门--本篇以及接下来的几篇有关RN的文章,是默认你对前端相关知识如Node,React,以及原生移动端Android可以熟练使用的情况下(最起码达到了解会用的程度)为前提的!不 ...

  8. hyperledger fabric v2.4环境搭建及区块链项目开发

    基础环境配置,不再详细描述:学习交流可联系博主. 安装go 安装docker 安装docker-compose 清空历史docker images docker system prune --all ...

  9. ionic入门教程第一课--环境搭建和新建ionic项目

    最近由于公司项目需要,自学Ionic.在这里做个备忘,也希望能帮到想自学ionic的其他朋友. 一.首先需要安装node.js环境,对于不了解node.js的同学也没有关系, 因为我们有用到的只是no ...

最新文章

  1. 电大工商管理计算机考试,东方电大工商管理专科计算机期末复习EXCEL五题.docx...
  2. 【Xamarin 挖墙脚系列:Xamarin SDK开源了................】
  3. 知道第一章计算机基础知识作业答案,大学计算机基础作业答案
  4. 55种数据可视化开源工具_4种开源工具让我的创业起步
  5. 聚类效果评价——Silhouette Coefficient(轮廓系数)——内部评估标准(1)
  6. 代码编辑器横评:为什么 VS Code 能拔得头筹?| 程序员硬核评测
  7. 2012年7月的主要目标
  8. JZOJ5197 C
  9. 《软件需求十步走》阅读计划第三篇
  10. 建筑电气工程设计常用图形和文字符号_建筑电气施工图设计正误案例对比
  11. Atitit sumdoc ta index list atiitt 2008 diary 大事记v2 s222.docx Atiti. 2010---2016大事记 just world new
  12. 100个C语言经典小程序和C语言编写的小游戏
  13. SAI的操作与快捷键
  14. Java之小球碰撞反弹
  15. 史上最全微信域名防封API原理及实现方案
  16. 泛微oa系统什么框架_泛微OA系统怎么样?与其他OA相比呢?
  17. 零学Java(7)之数据类型,小AD竟然solo不过小朋友
  18. 《点线SLAM系统》
  19. FPD-LINK网上搜集的相关资料链接(持续更新)
  20. 4K智能AI双目自动跟踪云台摄像机

热门文章

  1. masm中常用的伪指令
  2. ptrace 系统调用
  3. 用户 IP,里面藏了多少秘密?
  4. 《MySQL实战45讲》实践篇 24-29 学习笔记 (主备篇)
  5. IntelliJ IDEA不好用?那是因为没掌握这些技巧
  6. 顶级极客技术挑战赛,你敢来挑战吗?| 大神登峰造极
  7. Python中菱形继承的MRO顺序及property属性
  8. Python中的线程间通信
  9. 【大会】5G现象级应用倒计时24个月
  10. 刘志勇:微博短视频百万级高并发架构