没有合适的资源?快使用搜索试试~ 我知道了~
java调用webservice
资源推荐
资源详情
资源评论
1 使用场景
B 公司想查询顺丰速递公司的快递信息,每次都去顺丰速递官网查询,登录用户名和密码比较的麻烦,想将查询功能集成到自己
的公司的系统中,此时顺丰速递就可以开放自己的查询接口给 B 公司使用,这种专门用来管理两系统之间交互的技术就是
webservie.
2 什么是 webservice?
Web Service 技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集
成。依据 Web Service 规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。
简单的说,WebService 就是一种跨编程语言和跨操作系统平台的远程调用技术。所谓跨编程语言和跨操作平台,就是说服务端
程序采用 java 编写,客户端程序则可以采用其他编程语言编写,反之亦然。跨操作系统平台则是指服务端程序和客户端程序可
以在不同的操作系统上运行。 远程调用,就是一台计算机的应用可以调用其他计算机上的应用。例如:支付宝,支付宝并没有
银行卡等数据,它只是去调用银行提供的接口来获得数据。还有天气预报等,也是气象局把自己的系统服务以 webservice 服务
的形式暴露出来,让第三方网站和程序可以调用这些服务功能。
3 WebService 的运行原理
【WebService 平台的三大技术技术—XML、SOAP、WSDL】
WebService 采用 Http 协议来在客户端和服务端之间传输数据,使用 XML 来封装数据,XML 主要的优点在于它是跨平台的。
WebService 通过 HTTP 协议发送请求和接收结果时,发送的请求内容和结果内容都采用 XML 格式封装,并增加了一些特定
的 HTTP 消息头,以说明 HTTP 消息的内容格式,这些特定的 HTTP 消息头和 XML 内容格式就是 SOAP 协议规定的。
WebService 服务器端首先要通过一个 WSDL 文件来说明自己有什么服务可以对外调用。简单的说,WSDL 像是说明书,用于
描述 WebService 及其方法、参数和返回值。 WSDL 文件保存在 Web 服务器上,通过一个 url 地址就可以访问到它。客户端要调
用一个 WebService 服务之前,要知道该服务的 WSDL 文件的地址。
WebService 服务提供商可以通过两种方式来暴露它的 WSDL 文件地址:
1、注册到 UDDI 服务器,以便被人查找。
2、直接告诉给客户端调用者。
总结:WebService 交互的过程就是,WebService 遵循 SOAP 协议通过 XML 封装数据,然后由 Http 协议来传输数据。
4 Webservice 平台技术简介
【WebService 平台的三大技术技术—XML、SOAP、WSDL】
【XML+XSD】
WebService 采用 HTTP 协议传输数据,采用 XML 格式封装数据(即 XML 中说明调用远程服务对象的哪个方法,传递的参数
是什么,以及服务对象的返回结果是什么)。
XML 是 WebService 平台中表示数据的格式。除了易于建立和易于分析外,XML 主要的优点在于它既是平台无关的,又是厂
商无关的。无关性是比技术优越性更重要的:软件厂商是不会选择一个由竞争对手所发明的技术的。
XML 解决了数据表示的问题,但它没有定义一套标准的数据类型,更没有说怎么去扩展这套数据类型。例如,整形数到底
代表什么?16 位,32 位,64 位?这些细节对实现互操作性很重要。XML Schema(XSD)就是专门解决这个问题的一套标准。它定
义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。WebService 平台就是用 XSD 来作为其数据类型系统的。当
你用某种语言(如 VB.NET 或 C#)来构造一个 Web service 时,为了符合 WebService 标准,所有你使用的数据类型都必须被转换为 XSD
类型。你用的工具可能已经自动帮你完成了这个转换,但你很可能会根据你的需要修改一下转换过程。
【SOAP】
WebService 通过 HTTP 协议发送请求和接收结果时,发送的请求内容和结果内容都采用 XML 格式封装,并增加了一些特定
的 HTTP 消息头,以说明 HTTP 消息的内容格式,这些特定的 HTTP 消息头和 XML 内容格式就是 SOAP 协议。SOAP 提供了标准的 RPC
方法来调用 Web Service。
SOAP 协议 = HTTP 协议 + XML 数据格式
SOAP 协议定义了 SOAP 消息的格式,SOAP 协议是基于 HTTP 协议的,SOAP 也是基于 XML 和 XSD 的,XML 是 SOAP 的数据编码
方式。打个比喻:HTTP 就是普通公路,XML 就是中间的绿色隔离带和两边的防护栏,SOAP 就是普通公路经过加隔离带和防护
栏改造过的高速公路。
【WSDL】
超市会通过滚动屏幕,宣传单页等方式告诉你该超市买那些东西。 WebService 也一样,WebService 客户端要调用一个
WebService 服务,首先要有知道这个服务的地址及服务里有什么方法可以调用,所以 WebService 务器端首先要通过一个 WSDL
文件来说明自己家里有那些服务(方法、参数、返回值)可以对外调用。
WSDL(Web Services Description Language)就是这样一个基于 XML 的语言,用于描述 Web Service 及其函数、参数和返回值。
它是 WebService 客户端和服务器端都能理解的标准格式。因为是基于 XML 的,所以 WSDL 既是机器可阅读的,又是人可阅读的,
这将是一个很大的好处。一些最新的开发工具既能根据你的 Web service 生成 WSDL 文档,又能导入 WSDL 文档,生成调用相应
WebService 的代理类代码。
4.1 WebService 的三元素
【UDDI】
UDDI 是一种用于描述、发现、集成 Web Service 的技术,它是 Web Service 协议栈的一个重要部分。通过 UDDI,企业可以根
据自己的需要动态查找并使用 Web 服务,也可以将自己的 Web 服务动态地发布到 UDDI 注册中心,供其他用户使用。
UDDI 是一种目录服务,通过它,企业可注册并搜索 Web services。企业将自己提供的 Web Service 注册在 UDDI,也可以使
用别的企业在 UDDI 注册的 web service 服务,从而达到资源共享。
UDDI 旨在将全球的 webservcie 资源进行共享,促进全球经济合作。
目前大部分企业使用 webservice 并不是必须使用 UDDI,因为用户通过 WSDL 知道了 web service 的地址,可以直接通过 WSDL 调
用 webservice。
【WSDL】
Web Service 描述语言 WSDL 就是用机器能阅读的方式提供的一个正式描述文档而基于 XML(标准通用标记语言下的一个
子集)的语言,用于描述 Web Service 及其函数、参数和返回值。因为是基于 XML 的,所以 WSDL 既是机器可阅读的,又是人可
阅读的。
总结:简单点说,就是使用规则,方便人和机器进行阅读
【SOAP】
基于 HTTP 和 XML,SOAP 即简单对象访问协议(Simple Object Access Protocol),它是用于交换 XML 编码信息的轻量级协议。
它有三个主要方面:XML-envelope 为描述信息内容和如何处理内容定义了框架,将程序对象编码成为 XML 对象的规则,执行远
程过程调用(RPC)的约定。SOAP 可以运行在任何其他传输协议上。例如,你可以使用 SMTP,即因特网电子邮件协议来传递 SOAP
消息,这可是很有诱惑力的。在传输层之间的头是不同的,但 XML 有效负载保持相同。
总结:简单点说,就是传输协议,方便进行传输
4.2 WebService 的三种开发规范
Webservice 开发规范:JAXM&SAAJ、JAX-WS(JAX-RPC)、JAX-RS
【JAX-WS】
JAX-WS(Java API For XML-WebService),JDK1.6 自带的版本为 JAX-WS2.1,其底层支持为 JAXB。早期的基于 SOAP 的 JAVA
的 Web 服务规范 JAX-RPC(Java API For XML-Remote Procedure Call)目前已经被 JAX-WS 规范取代,JAX-WS 是 JAX-RPC 的演进
版本,但 JAX-WS 并不完全向后兼容 JAX-RPC,二者最大的区别就是 RPC/encoded 样式的 WSDL,JAX-WS 已经不提供这种支持。
JAX-RPC 的 API 从 JAVA EE5 开始已经移除,如果你使用 J2EE1.4,其 API 位于 javax.xml.rpc.*包。JAX-WS(JSR 224)规范的 API
位于 javax.xml.ws.*包,其中大部分都是注解,提供 API 操作 Web 服务(通常在客户端使用的较多,由于客户端可以借助 SDK
生成,因此这个包中的 API 我们较少会直接使用)。WS-MetaData(JSR 181)是 JAX-WS 的依赖规范,其 API 位于 javax.jws.*包,
使用注解配置公开的 Web 服务的相关信息和配置 SOAP 消息的相关信息。
【JAXM&SAAJ】
JAXM(JAVA API For XML Message)主要定义了包含了发送和接收消息所需的 API,相当于 Web 服务的服务器端,其 API 位
于 javax.messaging.*包,它是 JAVA EE 的可选包,因此你需要单独下载。SAAJ(SOAP With Attachment API For Java,JSR 67)是与
JAXM 搭配使用的 API,为构建 SOAP 包和解析 SOAP 包提供了重要的支持,支持附件传输,它在服务器端、客户端都需要使用。
这里还要提到的是 SAAJ 规范,其 API 位于 javax.xml.soap.*包。JAXM&SAAJ 与 JAX-WS 都是基于 SOAP 的 Web 服务,相比之下
JAXM&SAAJ 暴漏了 SOAP 更多的底层细节,编码比较麻烦,而 JAX-WS 更加抽象,隐藏了更多的细节,更加面向对象,实现起
来你基本上不需要关心 SOAP 的任何细节。那么如果你想控制 SOAP 消息的更多细节,可以使用 JAXM&SAAJ,2012 年版本为
1.3。
【JAX-RS】
JAX-RS 是 JAVA 针对 REST(Representation State Transfer)风格制定的一套 Web 服务规范,由于推出的较晚,该规范(JSR
311,目前 JAX-RS 的版本为 1.0)并未随 JDK1.6 一起发行,你需要到 JCP 上单独下载 JAX-RS 规 范的接 口,其 API 位 于
javax.ws.rs.*包。
这里的 JAX-WS 和 JAX-RS 规范我们采用 Apache CXF 作为实现,CXF 是 Objectweb Celtix 和 Codehaus XFire 合并而成。CXF 的核
心是 org.apache.cxf.Bus(总线),类似于 Spring 的 ApplicationContext,Bus 由 BusFactory 创建,默认是 SpringBusFactory 类,
可见默认 CXF 是依赖于 Spring 的,Bus 都有一个 ID,默认的 BUS 的 ID 是 cxf。你要注意的是 Apache CXF2.2 的发行包中的 jar
你如果直接全部放到 lib 目录,那么你必须使用 JDK1.6,否则会报 JAX-WS 版本不一致的问题。对于 JAXM&SAAJ 规范我们采用 JDK
中自带的默认实现。
5 Webservice 使用场合及优缺点
剩余11页未读,继续阅读
资源评论
雾林小妖
- 粉丝: 1w+
- 资源: 90
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功