spring调用webservice
spring调用webservice
- 一、WebService入门
- 1.1 什么是WebService
- 1.2 调用网络上的WebService服务
- 1.3 SOAP和WSDL概念
- 1.3.1 SOAP(Simple Object Access Protocol):简单对象访问协议
- 1.3.2 WSDL Web服务描述语言
- 二、基于jdk1.7发布一个WebService服务
- 2.1 服务端发布
- 2.2 客户端调用
- 三、apache CXF
- 3.1 服务端开发
- 3.2 客户端开发
spring调用webservice服务是基于Apache的CXF实现的
一、WebService入门
1.1 什么是WebService
Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。
Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。
WebService的特点:
- WebService通过HTTP POST方式接受客户的请求
- WebService与客户端之间一般使用SOAP协议传输XML数据
- 它本身就是为了跨平台或跨语言而设计的
1.2 调用网络上的WebService服务
公共的webservice服务,可以查阅。http://webxml.com.cn/
1.3 SOAP和WSDL概念
1.3.1 SOAP(Simple Object Access Protocol):简单对象访问协议
- SOAP作为一个基于XML语言的协议用于在网上传输数据。
- SOAP = 在HTTP的基础上+XML数据。
- SOAP是基于HTTP的。
SOAP的组成如下:
- Envelope – 必须的部分。以XML的根元素出现。
- Headers – 可选的。
- Body – 必须的。在body部分,包含要执行的服务器的方法。和发送到服务器的数据。
1.3.2 WSDL Web服务描述语言
WSDL(WebService Description Language):web 服务描述语言
就是一个xml文档,用于描述当前服务的一些信息(服务名称、服务的发布地址、服务提供的方法、方法的参数类型、方法的返回值类型等)
二、基于jdk1.7发布一个WebService服务
2.1 服务端发布
服务端发布过程很简单,只需要在类上加上webservice注解即可
@WebService
public class HelloService {public String sayHello(String name,int i){System.out.println("服务端的sayHello方法被调用了。。。。");return "helle" + name;}public static void main(String[] args) {String address = "http://192.168.115.87:8080/hello";Object implementor = new HelloService();Endpoint.publish(address, implementor);}
}
2.2 客户端调用
在控制台中,定位到一个空文件夹,通过jdk提供的命令,将webservice解析生成本地代码
/*** 1、使用wsimport命令解析wsdl文件生成本地代码* 2、通过本地代码创建一个代理对象* 3、通过代理对象实现远程调用* @author zhaoqx**/
public class App {public static void main(String[] args) {HelloServiceService ss = new HelloServiceService();//创建客户端代理对象,用于远程调用HelloService proxy = ss.getHelloServicePort();String ret = proxy.sayHello("小明", 10);System.out.println(ret);}
}
三、apache CXF
采用jdk提供的webservice注解对于实际开发中过于困难,因此采用apache提供的CXF来实现
3.1 服务端开发
- 导入CXF相关的jar包
- 在web.xml中配置CXF框架提供的一个Servlet
<!-- 配置CXF框架提供的Servlet --><servlet><servlet-name>cxf</servlet-name><servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class><!-- 通过初始化参数指定CXF框架的配置文件位置 --><init-param><param-name>config-location</param-name><param-value>classpath:cxf.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>cxf</servlet-name><url-pattern>/service/*</url-pattern></servlet-mapping>
- 在类路径下提供cxf.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:soap="http://cxf.apache.org/bindings/soap"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.xsdhttp://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"><!-- 引入CXF Bean定义如下,早期的版本中使用 --><import resource="classpath:META-INF/cxf/cxf.xml" /><import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /><import resource="classpath:META-INF/cxf/cxf-servlet.xml" /></beans>
- 开发一个接口和实现类
- 在cxf.xml中注册服务
3.2 客户端开发
1、创建Java项目,并导入相关的jar包
2、使用wsimport或者CXF提供wsdl2java生成本地代码,只需要生成接口文件即可
3、将接口文件复制到项目中
4、提供spring配置文件,注册客户端代理对象
5、读取spring配置文件,创建spring工厂,从工厂中获取代理对象,实现远程调用
同样可以采用注解的方式从spring容器中获得代理对象
//注入crm代理对象@Autowiredprivate ICustomerService proxy;
spring调用webservice相关推荐
- spring boot整合cxf发布和调用webservice
一.前言 说起web service最近几年restful大行其道,大有取代传统soap web service的趋势,但是一些特有或相对老旧的系统依然使用了传统的soap web service,例 ...
- 调用webservice接口,数据不回滚问题
调用webservice接口,数据不回滚问题 使用cxf+spring框架开发webservice接口,在开发一个具有保存数据的接口功能时,如果数据发生了异常,对service层无论使用了xml配置声 ...
- CXF整合Spring开发WebService
刚开始学webservice时就听说了cxf,一直没有尝试过,这两天试了一下,还不错,总结如下: 要使用cxf当然是要先去apache下载cxf,下载完成之后,先要配置环境变量,有以下三步: 1.打开 ...
- java使用axis2调用webservice接口实例
说明:我目前的项目环境是struts2+spring+mybatis+oracle,以下代码是java使用axis2调用webservice接口实例. import javax.xml.namespa ...
- Java远程调用WebService接口
WebService简介 Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件, 就可相互交换数据或集成.依据Web Service规范实施的应用之间, ...
- java cxf spring_CXF整合Spring开发WebService
刚开始学webservice时就听说了cxf,一直没有尝试过,这两天试了一下,还不错,总结如下: 要使用cxf当然是要先去apache下载cxf,下载完成之后,先要配置环境变量,有以下三步: 1.打开 ...
- java 调用webservice的各种方法总结
http://www.blogjava.net/zjhiphop/archive/2009/04/29/webservice.html 现在webservice加xml技术已经逐渐成熟,但要真正要用起 ...
- xml提示无法连接到远程服务器,异步调用WebService时,如何捕捉“无法连接远程服务器”异常...
在winform窗体中调用webservice,过程如下: ①Form1中弹出Form2 Form2 form2 = new Form2(); form2.ShowDialoag(); ②Form2中 ...
- 在Android中使用Android Ksoap2调用WebService
一.WebService介绍 WebService是基于SOAP协议可实现web服务器与web服务器之间的通信,因采用SOAP协议传送XML数据具有平台无关性,也是成为解决异构平台之间通信的重要解决方 ...
- Javascript+xmlhttp调用Webservice
1. 创建webservice,为了免于落俗我稍稍修改了创建webserice的默认webmethod.^_^ using System; using System.Web; using Syste ...
最新文章
- 使用NPOI时ICSharpCode.SharpZipLib版本冲突问题解决
- 091_类数组对象转为数组
- Centos7入侵分析:分析SSH登录日志
- 查看显卡显存_3d渲染需要多大显存比较合适?显存在渲染中的作用
- 编程小白的第一条博客
- 领扣-1/167 两数之和 Two Sum MD
- spring zipkin mysql_springboot + zipkin + mysql
- pycharm的terminal无法识别到命令 pytest 不是内部或外部命令,也不是可运行的程序 或批处理文件。
- python实用技巧(四)
- 「洛谷5017」「NOIP2018」摆渡车【DP,经典好题】
- 求素数及素数表的获取
- linux虚拟机读取本地磁盘文件,kvm虚拟化学习笔记(十三)之kvm虚拟机磁盘文件读取小结...
- 十款代码表白特效,一个比一个浪漫
- 微信小程序保存图片到手机相册(封装全局使用)
- java做2048_java版实现2048游戏功能
- End event threw exception
- 从架构到算法到赋能业务,关于国际化电商技术链路的最完整分享【Lazada技术开放日】
- 金蝶EAS开发 第一弹:了解开发工具与基本使用(上)
- 文字转语音在线转换方法
- 数据库面试题(SQL语句)
热门文章
- 利用imageai做一个物体检测系统
- 利用运动学实现导弹仿真飞行
- 批量下载GLDAS数据
- 如何在Linux中删除符号链接?
- 用编程器免拆夹子刷斐讯K2 K2P解决难搞固件 刷BREED 无损原EEPROM
- matlab 冒泡排序函数,MATLAB实现冒泡排序算法
- Virtex-4 cameralink开发板PCI图像采集卡定制FPGA-HDMI编码-LVDS相机
- 《操作系统原理》课程中涉及的数据结构总结
- 为什么仿宋字体打印出楷体_win7仿宋字体及楷体字体打包下载
- 重心(质量对位置的加权平均)与转动惯量(使物体甩动的难易程度与质量m和到轴的距离r的平方有关)