欢迎来到天天文库
浏览记录
ID:9084150
大小:360.00 KB
页数:10页
时间:2018-04-16
《深入浅出webservice》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、深入浅出WebService引言最近几年WebService技术正在逐渐成熟,并在项目中开始广泛使用。现在我们简单了解一下什么是WebService,如何使用它。什么是WebServiceWebService,顾名思义就是基于Web的服务。它使用Web方式,接收和响应外部系统的某种请求。比如,我们可以提供一个用于查询天气信息的WebService,然后可以用任何支持WebService的客户端连接到这个Service进行查询。很多企业用户经过多年的积累,已经部署了很多应用系统。这些应用系统在企业运营中分担着不同的功能或任务。随着
2、企业的发展壮大,由于种种原因,这些企业用户逐渐开始考虑如何对原有的这些旧系统进行整合。使用WebService方式将这些旧的应用系统整合起来,对外部提供一致的接口,不仅可以达到整合已有旧系统的目的,还可以避开因为完全构建一个新系统而产生的风险。这样就大大降低了项目的成本和风险。这就是SOA得以被客户广泛采纳的原因。从WebService的工作模式上理解的话,它跟普通的Web程序(比如ASP、JSP等)并没有本质的区别,都是基于HTTP传输协议的程序。WebService与普通Web程序的区别主要在于:1)WebService只采
3、用HTTPPOST方式传输数据,不使用GET方式;2)WebService从数据传输格式上作了限定。WebService所使用的数据均是基于XML格式的。目前标准的WebService在数据格式上主要采用SOAP协议。SOAP协议实际上就是一种基于XML编码规范的文本协议。所以我们可以用下面这个图来简单地描述WebService:ClientWebServiceSOAP(XML)通迅协议:HTTPPOSTWebService和Web服务器的区别有人曾疑问WebService和Web服务器有什么区别呢?我们可以把WebServic
4、e看作是Web服务器上应用;反过来说,Web服务器是WebService运行时所必需的容器。这就是它们的区别和联系。WebService的特点通过上面对WebService的简要介绍,我们了解到WebService的主要特性:1)WebService通过HTTPPOST方式接受客户的请求2)WebService与客户端之间一般使用SOAP协议传输数据必须注意到,WebService标准本身并没有限制服务端或客户端的操作系统环境或编程语言环境。因为它本身就是为了跨平台或跨应用而设计的。所以我们会看到很多声称支持WebService
5、的平台。比如:MicrosoftVisualStudio开发平台,Sping,Axis,XFire,Spring等等。我现在主要讨论Java平台上的WebService框架,实际上其中的原理也适用于其它平台。基于Java技术的WebService对于Java平台,常见的WebService框架有Spring+XFire,Axis,CXF。这些框架各有千秋,本次讨论以理解WebService的原理为目标,所以我选择了CXF这个相对简单的框架。通过使用CXF,我们可以了解WebService服务端的工作机制,实际上它跟其它WebSe
6、rvice框架在这方面没有区别。我会介绍如何创建一个通用的WebService服务端;然后我还会介绍如何自己编写一个通用的客户端,直接通过HTTPPOST方式调用WebService服务端。CXF是Apache基金会组织下的一个项目,简化了WebService服务端的创建过程。CXF实现了JAX-WS2.0规范,并通过了JAX-WS2.0TCK;CXF可以和Spring无缝集成;CXF支持多种传输协议(HTTP,JMS,Corba等),支持多种Binding数据格式(SOAP,XML,JSON等),支持多种DataBinding
7、数据类型(JAXB,Aegis)。CXF基于Interceptor的架构,使得整个框架非常易于扩展。本次我主要讨论CXF在HTTP/SOAP模式下的处理机制。可以从http://cxf.apache.org/download.html下载CXF,目前最新版本是2.2.5。下载最新的版本后,解压压缩包,从lib目录下至少要拿出下面几个jar放入你的工程:cxf-2.2.5.jarantlr-2.7.7.jarcommons-codec-1.3.jarcommons-collections-3.2.1.jarcommons-lang
8、-2.4.jarcommons-logging-1.1.1.jarcommons-pool-1.5.2.jargeronimo-annotation_1.0_spec-1.1.1.jargeronimo-jaxws_2.1_spec-1.0.jargeronim
此文档下载收益归作者所有