CXF作为java领域主流的WebService实现框架,Java程序员有必要掌握它。

CXF主页:http://cxf.apache.org/

简介:百度百科

今天的话,主要是用CXF来开发下WebService服务器端接口,明天写下开发客户端接口;

这里用Maven。

首先建一个Maven的j2se项目;

项目的jre用1.8,因为1.8有webservice的默认实现。不要用1.5 不然下面你用我的代码会有问题,用1.5的话,还需要另外加jar包,这里为了大家省事,要换成1.8;

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

package com.wishwzp.webservice;

import javax.jws.WebService;

@WebService
public interface HelloWorld { public String say(String str);
}

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

package com.wishwzp.webservice.impl;

import javax.jws.WebService;

import com.wishwzp.webservice.HelloWorld;

@WebService
public class HelloWorldImpl implements HelloWorld{ public String say(String str) {
return "hello" + str;
} }

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

package com.wishwzp.webservice;

import javax.xml.ws.Endpoint;

import com.wishwzp.webservice.impl.HelloWorldImpl;

public class Server {

    public static void main(String[] args) {
System.out.println("web service start");
HelloWorld implementor = new HelloWorldImpl();
String address = "http://192.168.0.110/helloWorld";
Endpoint.publish(address, implementor); // JDK实现 暴露webservice接口
System.out.println("web service started");
}
}

这里的Endpoint是Jdk自身实现的WebService。所以到这里我们不需要用到CXF的任何东西。

这里的address,写上自己的本机IP

我们运行下Server类:

运行效果如下:

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

效果:

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

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

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

下面我们介绍使用CXF来实现webservice接口:

我们先在pom.xml中加入:

<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-core</artifactId>
<version>3.1.5</version>
</dependency> <dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.1.5</version>
</dependency> <dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>3.1.5</version>
</dependency>

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

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

package com.wishwzp.webservice;

import javax.xml.ws.Endpoint;

import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

import com.wishwzp.webservice.impl.HelloWorldImpl;

public class Server {

    public static void main(String[] args) {
System.out.println("web service start");
HelloWorld implementor = new HelloWorldImpl();
String address = "http://192.168.0.110/helloWorld";
//Endpoint.publish(address, implementor); // JDK实现 暴露webservice接口
JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();
factoryBean.setAddress(address); // 设置暴露地址
factoryBean.setServiceClass(HelloWorld.class); // 接口类
factoryBean.setServiceBean(implementor); // 设置实现类
factoryBean.create();
System.out.println("web service started");
System.out.println("web service started");
}
}

运行效果和刚才一样,这里就不再重复;

(二)使用CXF开发WebService服务器端接口的更多相关文章

  1. 使用cxf开发webservice接口

    项目中经常用到开发webservice接口,及调用webService接口.这里讲解如何使用cxf开发webService接口. 一.webservice介绍及理解 webservice是一种跨平台, ...

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

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

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

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

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

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

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

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

  6. WebService -- Java 实现之 CXF (WebService 服务器端接口)

    1. 使用Maven创建一个quickstart项目 2. 引入依赖的Jar包 <dependency> <groupId>org.apache.cxf</groupId ...

  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. 3.使用CXF开发webService

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

随机推荐

  1. 即将上线的Hive服务器面临的一系列填坑笔记

    即将上线的Spark服务器面临的一系列填坑笔记 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.18/10/19 16:36:31 WARN metastore.ObjectSt ...

  2. 学习windows编程 day3 之窗口绘画二:边框绘制函数

    #include <windows.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM l ...

  3. netty基础篇

    什么是Bio? 当客户端数量过多时,创建的线程会越来越多,最终服务挂掉,因为客户端的线程数量和服务端创建的线程数量是一一对应的. 什么是伪异步IO? 什么是Nio? 什么是Aio

  4. synchronized实现原理

    线程安全是并发编程中的重要关注点,应该注意到的是,造成线程安全问题的主要诱因有两点,一是存在共享数据(也称临界资源),二是存在多条线程共同操作共享数据.因此为了解决这个问题,我们可能需要这样一个方案, ...

  5. Codeforces 219D - Choosing Capital for Treeland(树形dp)

    http://codeforces.com/problemset/problem/219/D 题意 给一颗树但边是单向边,求至少旋转多少条单向边的方向,可以使得树上有一点可以到达树上任意一点,若有多个 ...

  6. Prim算法:最小生成树

    #define _CRT_SECURE_NO_WARNINGS /* 7 10 0 1 5 0 2 2 1 2 4 1 3 2 2 3 6 2 4 10 3 5 1 4 5 3 4 6 5 5 6 9 ...

  7. ThinkPHP 3.2 DEMO案例系列【phpmailer批量发送邮件】

    但是邮件和短信相比在一些场景依然有着重要的意义和优势: 1:零成本:发邮件没有费用: 2:内容丰富且量大:邮件可以长篇大论:图文并茂: 3:增加访问量:用户很容易通过邮件中的链接访问网站: 好了:下面 ...

  8. toFixed方法的bug

    最近在工作过程中碰到一个隐藏的bug,经调试发现竟然是toFixed函数不可靠的结果引起的.后端同学在处理价格比较的时候,用foFixed进行价格的四舍五入之后,竟然发现比较的结果有问题: 大家都知道 ...

  9. GDAL中文件的驱动及对应的文件格式(转) https://blog.csdn.net/haojknm/article/details/5851968

    GDALDriver * poDriver; char *pszFormat=GetOutimgInfo(m_strInput); poDriver = GetGDALDriverManager()- ...

  10. 前段clam安装

    前端模块化协同开发解决方案 —— clam 1. 打开后直接看最后一条https://blog.csdn.net/zhangwenwu2/article/details/581720422. node ...