项目中经常用到开发webservice接口,及调用webService接口。这里讲解如何使用cxf开发webService接口。

一、webservice介绍及理解

webservice是一种跨平台,跨语言的规范,用于不同平台,不同语言开发的应用之间的交互。 
       比如,平台平台淘宝、京东想获取其他快递公司数据接口,需快递公司开放数据接口。
       那么 webservice就是出于以上类似需求而定义出来的规范;无需关心对方什么平台上开发以及使用何种语言开发。
       只关心调用对方发布webservice接口的一些对我们获取有用数据的方法。
       开发人员一般就是在具体平台开发webservice接口,以及调用webservice接口;每种开发语言都有自己的webservice实现框架。
       比如Java 就有 Apache Axis1、Apache Axis2、Codehaus XFire、Apache CXF、Apache Wink、Jboss  RESTEasyd等等...

二、cxf

  cxf是java开发webService的一种实现框架技术。目前,cxf是主流的webService实现框架。

使用cxf开发需引入cxf开发相关jar包,maven项目中pom.xml配置如下:

 1 <!--添加cxf支持  -->
2 <dependency>
3 <groupId>org.apache.cxf</groupId>
4 <artifactId>cxf-rt-frontend-jaxws</artifactId>
5 <version>3.1.9</version>
6 </dependency>
7 <dependency>
8 <groupId>org.apache.cxf</groupId>
9 <artifactId>cxf-rt-transports-http-jetty</artifactId>
10 <version>3.1.9</version>
11 </dependency>
12 <dependency>
13 <groupId>org.apache.cxf</groupId>
14 <artifactId>cxf-core</artifactId>
15 <version>3.1.9</version>
16 </dependency>

备注:这里要额外加入jetty,作为webservice发布的服务器。jetty是一个内嵌的web服务器;

使用JaxWsServerFactoryBean类创建工厂设置暴露地址、接口类、接口实现类,创建即可发布。

三、下面演示其实现过程

发布webService接口,需一个发布服务的url地址,及对应的接口。Jdk自身有实现WebService。

具体实现代码如下:

根据规范,我们先建一个接口类:HelloWorld

 1 /**
2 *
3 */
4 package com.hik.webservice;
5
6 import javax.jws.WebService;
7
8 /**
9 * @ClassName: HelloWorld
10 * @Description: TODO
11 * @author jed
12 * @date 2017年7月30日上午10:20:35
13 *
14 */
15 @WebService
16 public interface HelloWorld {
17
18 public String say(String str);
19 }

再建一个具体的实现类:HelloWorldImpl

 1 /**
2 *
3 */
4 package com.hik.webservice.impl;
5
6 import javax.jws.WebService;
7
8 import com.hik.webservice.HelloWorld;
9
10 /**
11 * @ClassName: HelloWorldImpl
12 * @Description: TODO
13 * @author jed
14 * @date 2017年7月30日上午10:24:46
15 *
16 */
17 @WebService
18 public class HelloWorldImpl implements HelloWorld{
19
20 public String say(String str) {
21 return "hello"+str;
22 }
23
24 }

最后建一个发布服务的主类:Server

 1 /**
2 *
3 */
4 package com.hik.webservice;
5
6 import javax.xml.ws.Endpoint;
7
8
9 import com.hik.webservice.impl.HelloWorldImpl;
10
11 /**
12 * @ClassName: Server
13 * @Description: TODO
14 * @author jed
15 * @date 2017年7月30日上午10:26:16
16 *
17 */
18 public class Server {
19
20 public static void main(String[] args) {
21 System.out.println("web Service start");
22 HelloWorldImpl implementor = new HelloWorldImpl();
23 String address="http://192.168.0.102/helloWorld";
24 Endpoint.publish(address, implementor);//JDK实现
25 System.out.println("web Service started");
26
27 }
28 }

这里的Endpoint是Jdk自身实现的WebService。这里的address,写上自己的本机IP

我们运行下Server类:

运行效果如下:

我们在浏览器里访问:http://192.168.1.102/helloWorld?wsdl

效果:

说明已经成功调用了webservice接口;

这里的wsdl 是 Web Services Description Language的缩写,是一个用来描述Web服务和说明如何与Web服务通信的XML语言。WSDL是Web Service的描述语言,用于描述Web Service的服务,接口绑定等,为用户提供详细的接口说明书。

请求后得到的是一个xml规范文档。是一套规范,任何语言平台技术都可以解析。

CXF来实现webservice接口

我们把Server改下。换成CXF实现:

 1 /**
2 *
3 */
4 package com.hik.webservice;
5
6 import javax.xml.ws.Endpoint;
7
8 import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
9
10 import com.hik.webservice.impl.HelloWorldImpl;
11
12 /**
13 * @ClassName: Server
14 * @Description: TODO
15 * @author jed
16 * @date 2017年7月30日上午10:26:16
17 *
18 */
19 public class Server {
20
21 public static void main(String[] args) {
22 System.out.println("web Service start");
23 HelloWorldImpl implementor = new HelloWorldImpl();
24 String address="http://192.168.0.102/helloWorld";
25 //Endpoint.publish(address, implementor);//JDK实现
26 JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();
27 factoryBean.setAddress(address); //设置暴露地址
28 factoryBean.setServiceClass(HelloWorld.class); //接口类
29 factoryBean.setServiceBean(implementor); //设置实现类
30 factoryBean.create();
31 System.out.println("web Service started");
32
33 }
34 }

效果和jdk实现的一样

from: https://www.cnblogs.com/jedjia/p/cxf.html

使用cxf开发webservice接口的更多相关文章

  1. struts1+spring+myeclipse +cxf 开发webservice以及普通java应用调用webservice的实例

    Cxf + Spring+ myeclipse+ cxf 进行  Webservice服务端开发 使用Cxf开发webservice的服务端项目结构 Spring配置文件applicationCont ...

  2. 【WebService】使用CXF开发WebService(四)

    CXF简介 Apache CXF = Celtix + XFire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF 了,以下简称为 CXF.CXF 继承了 Celtix ...

  3. 使用cxf开发webservice应用时抛出异常

    在使用cxf开发webservice应用时,报出了类似下面的错误 JAXB: [javax.xml.bind.UnmarshalException: unexpected element (uri:& ...

  4. (二)使用CXF开发WebService服务器端接口

    CXF作为java领域主流的WebService实现框架,Java程序员有必要掌握它. CXF主页:http://cxf.apache.org/ 简介:百度百科 今天的话,主要是用CXF来开发下Web ...

  5. 3.使用CXF开发webService

    CXF 简介 关于 Apache CXF Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache ...

  6. [转] WebService开发笔记 1 -- 利用cxf开发WebService竟然如此简单

    以下文章来自   http://www.blogjava.net/jacally/articles/186655.html 现在的项目中需要用到SOA概念的地方越来越多,最近我接手的一个项目中就提出了 ...

  7. Spring boot+CXF开发WebService

    最近工作中需要用到webservice,而且结合spring boot进行开发,参照了一些网上的资料,配置过程中出现的了一些问题,于是写了这篇博客,记录一下我这次spring boot+cxf开发的w ...

  8. Spring boot+CXF开发WebService Demo

    最近工作中需要用到webservice,而且结合spring boot进行开发,参照了一些网上的资料,配置过程中出现的了一些问题,于是写了这篇博客,记录一下我这次spring boot+cxf开发的w ...

  9. (三)使用CXF开发WebService客户端

    前面一讲开发了webservice服务器端接口,今天的话,我们来开发webservice客户端,让大家来体验下过程: 首先建一个Maven项目,项目名字,WS_Client: 然后我们要用CXF给我们 ...

随机推荐

  1. c++模板与泛型编程基础

    (1)定义函数模板(function template) 函数模板是一个独立于类型的函数,可以产生函数的特定类型版本. // implement strcmp-like generic compare ...

  2. 程序设计实习MOOC / 程序设计与算法(二)第二周测验(2018春季)

    递归算法: 1:全排列 总时间限制:  1000ms 内存限制:  65536kB 描述 给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列. 我们假设对于小写字母有'a' < ' ...

  3. Asp.net MVC4 +EF6开发的个人网站源码和介绍(仅供新手学习)

    本项目是我去年利用业余时间开发的,采用的是asp.net mvc 4 +EF6+三层架构,适合新手进行学习,高手就没有什么价值了,可以直接跳过. 源码和数据库下载(已上传到git):https://g ...

  4. 【LOJ】#2063. 「HAOI2016」字符合并

    题解 dp[i][j][S]表示区间[i,j]内剩余的数位状压后为S的最大值 这样转移起来不就是\(n^3 2^8\)了吗 冷静一下,我们可以发现一段区间内剩下的数位的个数是一定的,也就是我们可以在枚 ...

  5. 2018 ACM-ICPC, Syrian Collegiate Programming Contest F - Pretests SOS dp

    #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk mak ...

  6. redhat重置密码

    当忘记虚拟机密码时怎么办? 1.启动虚拟机,当虚拟机显示输入enter启动时输入e 2.再次用上下键选中你平时启动linux的那一项(类似于kernel /boot/vmlinuz-2.4.18-14 ...

  7. 黑马程序员_java基础笔记(06)...集合

    —————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流! —————————— JavaApi(其实就是java给我们提供的已经定义好的对象.工具对象:集合框架) ...

  8. Jersey入门二:运行项目

    1.项目有了,在终端窗口进入项目的根目录(即 \simple-service ) 2.现在先测试运行下: mvn clean test  项目将会被编译,并且进行单元测试  上面可以看看到测试通过 ...

  9. 【原创】SQL Server常用脚本整理

    --1.禁用启用账号账号 set nocount on SELECT 'ALTER LOGIN ' + name + ' ENABLE' FROM master.sys.server_principa ...

  10. 美团外卖iOS多端复用的推动、支撑与思考

    背景 美团外卖2013年11月开始起步,随后高速发展,不断刷新多项行业记录.截止至2018年5月19日,日订单量峰值已超过2000万,是全球规模最大的外卖平台.业务的快速发展对技术支撑提出了更高的要求 ...