在我们真实的项目中,经常会调用别人提供给我们的接口,或者在自己的团队中,

restful风格的前后端分离也经常会提供一个后端接口暴露出去供app,或者.net/C/C++程序员去调用,此时就需要使用到一个工具或者一套程序来调用暴露的接口。

而今天我要说的就是其中的一个方式,使用apache的cxf调用以及暴露接口,让我们直接开始代码

1、首先我们需要去下载cxf,cxf是apache的一个产品,下载链接附上:http://www.apache.org/dyn/closer.lua/cxf/3.2.5/apache-cxf-3.2.5.zip

建议大家下载这个

下载完成之后解压放在一个目录下,需要去环境变量的path路径下配置一下,这里请看图解:

(这个是下载解压好的cxf,版本是3.2.5)

环境变量配置:

新建一个CXF_HOME的环境变量,指向你的CXF解压后存放的路径

然后在path中添加这个bin

此时在cmd命令中输入wsdl2java -help,可以看到输出下面这些内容,此时你已经配置好了cxf

打开idea,我们可以开始编写代码了

2、idea中配置cxf

一次打开File--settings--左侧输入cxf--选择Tools下面的WebServices

如图的cxf配置即可。

3、新建项目就不介绍了,直接开始写一个要暴露的接口:

package com.cxfdemo.hello;

import javax.jws.WebService;

@WebService
public interface MyWebService {
int add(int a, int b);
int minus(int a, int b);
}

  写这个接口的实现类

 package com.cxfdemo.hello;

 import javax.jws.WebService;

 @WebService(endpointInterface = "com.cxfdemo.hello.MyWebService")
public class MyWebServiceImpl implements MyWebService{
@Override public int add(int a, int b) {
System.out.println(a+"+"+b+"="+(a+b)); return a+b;
}
@Override public int minus(int a, int b) {
System.out.println(a + "-" + b + "=" + (a - b));
return a - b;
}
}

这时候可以写一个暴露的Server端:

package com.cxfdemo.hello;

import javax.xml.ws.Endpoint;

public class MyServer {
public static void main(String[] args) {
String address = "http://localhost:8888/ms";
Endpoint.publish(address,new MyWebServiceImpl());
}
}

  Client测试端:

 package com.cxfdemo.hello;

 import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import java.net.MalformedURLException;
import java.net.URL; public class MyClient {
public static void main(String args[]) {
try { URL url = new URL("http://localhost:8888/ms?wsdl");
//命名空间 及 名称
QName qName = new QName("http://hello.cxfdemo.com/","MyWebServiceImplService");
Service service = Service.create(url, qName); MyWebService myWebservice = service.getPort(MyWebService.class);
System.out.println(myWebservice.add(2, 3)); System.out.println(myWebservice.minus(2, 3));
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}

这个时候我们就可以启动项目了,首先运行启动MyServer,项目启动成功后,我们可以通过这个链接访问:http://localhost:8888/ms?wsdl

此时可以看到暴露的接口的内容:

  此时即暴露接口成功,我们再来启动Client测试端:

看到控制台输出:

此时你就可以开始写一个基于WebService的暴露接收demo了

Apache cxf暴露接口以及客户端调用之WebService初步理解的更多相关文章

  1. apache cxf笔记之Spring客户端访问和调用webservice服务

    继续上次的spring服务的问题,这边介绍一种spring配置客户端的方法. 1.src目录下新建client-beans.xml文件 <?xml version="1.0" ...

  2. httpclient妙用一 httpclient作为客户端调用soap webservice(转)

    前面有一篇使用HttpClient调用带参数的post接口方法,这里找到一篇使用HttpClient调用Soap协议接口的方式. 原文地址:httpclient妙用一 httpclient作为客户端调 ...

  3. Apache CXF实现Web Service(5)—— GZIP使用

    Apache CXF实现Web Service(5)-- GZIP使用 参考来源: CXF WebService整合Spring Apache CXF实现Web Service(1)--不借助重量级W ...

  4. WebService—CXF—实现接口发布和客户端调用

    (一)接口发布的几种方式 定义接口: @WebService(targetNamespace="http://www.itfad.net/queryUser") public in ...

  5. 解决由于服务器调用删除或添加字段后CXF客户端未更新导致异常问题org.apache.cxf.interceptor.Fault: Unmarshalling Error: Unexpected element

    采用CXF客户端调用Webservice服务,由于服务端时不时会对Webservice服务删除或添加一些字段,而CXF未及时更新客户端代码导致再次调用服务时报异常错误: Interceptor for ...

  6. WebService—CXF整合Spring实现接口发布和调用过程

    一.CXF整合Spring实现接口发布 发布过程如下: 1.引入jar包(基于maven管理) <!-- cxf --> <dependency> <groupId> ...

  7. webservice发布服务:CXF及客户端调用

    2.CXF:(与spring整合) CXF相对来说操作没有AXIS繁琐 1.导入spring的jar包和cxf的jar包 2.在spring的核心配置文件中配置发布的接口类 <?xml vers ...

  8. CXF发布webService服务以及客户端调用

    这篇随笔内容是CXF发布webService服务以及客户端调用的方法 CXF是什么? 开发工作之前需要下载CXF和安装 下载地址:http://cxf.apache.org 安装过程: <1&g ...

  9. Apache CXF实现WebService发布和调用

    第一种方法:不用导入cxf jars 服务端: 1. 新建Web工程 2.新建接口和实现类.测试类 目录结构图如下: 接口代码: package com.cxf.spring.service; imp ...

随机推荐

  1. Spring Boot MyBatis配置多种数据库

    mybatis-config.xml是支持配置多种数据库的,本文将介绍在Spring Boot中使用配置类来配置. 1. 配置application.yml # mybatis配置 mybatis: ...

  2. 微信 H5 支付流程以及一些坑

    原文:https://blog.niceue.com/front-end-development/wechat-h5-payment-process-as-well-as-some-pits.html ...

  3. php使用PHPexcel类读取excel文件(循环读取每个单元格的数据)

    error_reporting(E_ALL); date_default_timezone_set('Asia/ShangHai'); include_once('Classes/PHPExcel/I ...

  4. 【转】ASP.NET Core 依赖注入

    DI在.NET Core里面被提到了一个非常重要的位置, 这篇文章主要再给大家普及一下关于依赖注入的概念,身边有工作六七年的同事还个东西搞不清楚.另外再介绍一下.NET  Core的DI实现以及对实例 ...

  5. 移植marvell poncat3 demo板的总结

    1.arm cpu自带的bootrom, 已经初始化好串口.SPI等外设,只要硬件设置好从SPI FLASH启动,则cpu自带的bootrom会自动打印出一些信息,显示出从SPI FLASH启动,驱动 ...

  6. spring BeanFactory及ApplicationContext中Bean的生命周期

    spring bean 的生命周期 spring BeanFactory及ApplicationContext在读取配置文件后.实例化bean前后.设置bean的属性前后这些点都可以通过实现接口添加我 ...

  7. BigDecimal遇到的问题,大伙也说说

    一:相除精度丢失的问题 BigDecimal的api除法相对加减乘要实现的复杂多了,只介绍常用的我遇到的问题: 问题:两数相除,如果9/3=3整除没问题,但是10/3=0.33333333...... ...

  8. HTML5文件API之FileReader

    在文件上传之前,我们总想预览一下文件内容,或图片样子,html5 中FileReader正好提供了2种方法,可以在不上传文件的情况下,预览文件内容. 图片预览:readAsDataURL(file); ...

  9. 言传菜单JSON数据

    {    "button": [        {            "name": "快速发布",             " ...

  10. Paxos 算法 :消息传递一致性

    网络上有很多关于优秀的关于Paxos 算法的文章,我下面进行整理搜集一下: 分布式理论之一:Paxos算法的通俗理解 维基的简介:Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 L ...