Apache cxf暴露接口以及客户端调用之WebService初步理解
在我们真实的项目中,经常会调用别人提供给我们的接口,或者在自己的团队中,
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初步理解的更多相关文章
- apache cxf笔记之Spring客户端访问和调用webservice服务
继续上次的spring服务的问题,这边介绍一种spring配置客户端的方法. 1.src目录下新建client-beans.xml文件 <?xml version="1.0" ...
- httpclient妙用一 httpclient作为客户端调用soap webservice(转)
前面有一篇使用HttpClient调用带参数的post接口方法,这里找到一篇使用HttpClient调用Soap协议接口的方式. 原文地址:httpclient妙用一 httpclient作为客户端调 ...
- Apache CXF实现Web Service(5)—— GZIP使用
Apache CXF实现Web Service(5)-- GZIP使用 参考来源: CXF WebService整合Spring Apache CXF实现Web Service(1)--不借助重量级W ...
- WebService—CXF—实现接口发布和客户端调用
(一)接口发布的几种方式 定义接口: @WebService(targetNamespace="http://www.itfad.net/queryUser") public in ...
- 解决由于服务器调用删除或添加字段后CXF客户端未更新导致异常问题org.apache.cxf.interceptor.Fault: Unmarshalling Error: Unexpected element
采用CXF客户端调用Webservice服务,由于服务端时不时会对Webservice服务删除或添加一些字段,而CXF未及时更新客户端代码导致再次调用服务时报异常错误: Interceptor for ...
- WebService—CXF整合Spring实现接口发布和调用过程
一.CXF整合Spring实现接口发布 发布过程如下: 1.引入jar包(基于maven管理) <!-- cxf --> <dependency> <groupId> ...
- webservice发布服务:CXF及客户端调用
2.CXF:(与spring整合) CXF相对来说操作没有AXIS繁琐 1.导入spring的jar包和cxf的jar包 2.在spring的核心配置文件中配置发布的接口类 <?xml vers ...
- CXF发布webService服务以及客户端调用
这篇随笔内容是CXF发布webService服务以及客户端调用的方法 CXF是什么? 开发工作之前需要下载CXF和安装 下载地址:http://cxf.apache.org 安装过程: <1&g ...
- Apache CXF实现WebService发布和调用
第一种方法:不用导入cxf jars 服务端: 1. 新建Web工程 2.新建接口和实现类.测试类 目录结构图如下: 接口代码: package com.cxf.spring.service; imp ...
随机推荐
- mysql 之库, 表的简易操作
一. 库的操作 1.创建数据库 创建数据库: create database 库名 charset utf8; charset uft8 可选项 1.2 数据库命名规范: 可以由字母.数字.下划 ...
- 安卓开发_浅谈WebView(转)
,有一个功能需要在APP中调用网站 百度了一下,发现需要用WebView来实现 实现方法很容易,我就不在这里写一遍了 ,直接转一下我学习的内容吧 原创作品,允许转载,转载时请务必以超链接形式标明文章 ...
- Chrome_浏览器开发人员工具
Google Chrome 浏览器开发人员工具,让网页开发变得更轻松 无论是 IE 6/7 的 Internet Explorer Developer Toolbar 或者是 IE 8 自带的 Dev ...
- sqlserver 2017 docker安装(启动代理)
从 Docker Hub 中拉出 SQL Server 2017 Linux 容器映像. docker pull microsoft/mssql-server-linux:2017-latest 运行 ...
- sql server系统表和视图相关的语句
一.系统表 数据字典的详细信息请查SQL SERVER BOL,这里仅列出一部分. 1.1.sysservers 1.查看所有本地服务器及链接服务器 select * from master..sys ...
- 洗礼灵魂,修炼python(38)--面向对象编程(8)—从算术运算符进一步认识魔法方法
上一篇文章了解了魔法方法,相信你已经归魔法方法至少有个概念了,那么今天就进一步的认识魔法方法.说这个之前,大脑里先回忆一下算术操作符. 什么是算术操作符?忘记没有?忘记了的自己倒回去看我前面的博文或者 ...
- 大表分批删除脚本之MySQL版
经常需要定期对某些表删除历史数据,通常这样的表的数据又是非常巨大,为了减轻对线上环境的影响,删除时必须分成小批量来进行. 以前分享过SQLServer的版本. 下面是MySQL版本: delimite ...
- windows server 2008额外域控提升为主域控
windows server 2008额外域控提升为主域控 ---图形界面操作方法 https://blog.csdn.net/tladagio/article/details/79618338 wi ...
- 使用zip压缩文件夹方法
最近使用MapGis对.MPJ工程文件文件裁剪后,要对裁剪后的图形文件.ML,.MT,.MP,.MPJ文件打包,在网上找到7zip,Zlib的库,虽然都有源码,但是Zlib库中的使用没找到文件压缩的函 ...
- 【JavaScript】获取当前页的URL与window.location.href
原文:http://blog.csdn.net/yongh701/article/details/45688743 版权声明:本文为博主原创文章,未经博主允许欢迎乱转载,标好作者就可以了!感谢欣赏!觉 ...