Java使用WebService详解.docx
- 文档编号:23811298
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:61
- 大小:310.04KB
Java使用WebService详解.docx
《Java使用WebService详解.docx》由会员分享,可在线阅读,更多相关《Java使用WebService详解.docx(61页珍藏版)》请在冰豆网上搜索。
Java使用WebService详解
Java使用
WebService详解
目录
1Webservice的概念1
2WebService架构和云1
3WebService的优势2
4WebService三个基本技术2
4.1SOAP2
4.2WSDL3
4.3UDDI3
5WebService的开源实现4
6基于Xfire的WebService开发5
6.1XFire概述5
6.2XFire安装包6
6.3XFire框架支撑环境7
6.3.1JDK版本选择、下载和安装7
6.3.2Servlet容器下载和安装7
6.3.3xalan7
6.4XFire应用配置7
6.4.1创建Web应用目录和基本元素8
6.4.2拷贝XFire所需的支持类包文件8
6.4.3修改web.xml,配置XFire框架运行所需的Servlet8
6.5POJO、SOA概述9
6.5.1被重新审视的POJO9
6.5.2让人爱恨交加的SOA10
6.6将POJO发布成Web服务10
6.6.1标准发布方式10
6.6.1.1创建Web服务接口10
6.6.1.2创建Web服务实现类11
6.6.1.3修改services.xml,将POJO发布成Web服务11
6.6.2与Hibernate、Spring集成方式12
6.6.2.1创建Web服务接口12
6.6.2.2创建Web服务实现类13
6.6.2.3配置Java-XMLBinding14
6.6.2.4创建xfire-servlet.xml15
6.6.2.5修改applicationContext.xml,将Service注入Hibernate16
6.7测试16
6.8通过Eclipse自动生成WebService项目17
6.9Client端代码19
6.9.1根据WSDL生成Client代码19
6.9.1.1准备运行环境20
6.9.1.2使用向导生成代码20
6.9.2调用WebService接口22
6.9.2.1Client开发者拥有Web服务端的class22
6.9.2.2动态模式23
6.9.2.3调用.net发布的WebService接口23
6.10Xfire的aegis绑定配置23
6.10.1当封装的接口类中,某方法返回集合类型时,aegis的绑定方式23
6.10.2映射POJO25
7基于ApacheCXF的WebService开发27
7.1简单的CXF应用27
7.1.1基础工作27
7.1.2需要发布的接口类和实现类27
7.1.2.1t.HelloInter.java28
7.1.2.2t.HelloImpl.java28
7.1.2.3t.user.java28
7.1.3发布服务29
7.1.3.1通过CXF内置的Jetty应用服务器发布29
7.1.3.2重写loadBus方法,用tomcat来发布30
7.1.3.3用tomcat,与Spring集成来发布32
7.1.3.4查看WSDL34
7.1.4客户端调用36
7.1.4.1客户端代码生成36
7.1.4.1.1使用MyEclipse工具生成36
7.1.4.1.2通过wsdl2java的命令生成客户端代码36
7.1.4.2调用web服务37
7.2CXF数据绑定38
7.2.1JAXB方式39
7.2.2AegisDatabinding方式40
7.3基于soap的web服务的WS-Security安全规范40
7.3.1传统的用户名令牌机制40
7.3.1.1服务器端实现40
7.3.1.2客户端实现42
7.3.2数字签证方式44
8基于HttpClient的PostMethod的WebService开发44
1Webservice的概念
什么是WebService呢?
从表面上看,WebService就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。
这就是说,你能够用编程的方法通过Web调用来实现某个功能的应用程序。
从深层次上看,WebService是一种新的Web应用程序分支,它们是自包含、自描述、模块化的应用,可以在网络(通常为Web)中被描述、发布、查找以及通过Web来调用。
一旦部署以后,其他WebService应用程序可以发现并调用它部署的服务。
WebService是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得WebService能与其他兼容的组件进行互操作。
它可以使用标准的互联网协议,像超文本传输协议HTTP和XML,将功能体现在互联网和企业内部网上。
WebService平台是一套标准,它定义了应用程序如何在Web上实现互操作性。
你可以用你喜欢的任何语言,在你喜欢的任何平台上写WebService。
WebService是构建互联网分布式系统的基本部件。
"网络服务"(WebService)的本质,就是通过网络调用其他网站的资源。
举例来说,写一个“四川大地震图片墙”,它能动态显示关于四川地震的最新图片。
但是,所有的图片都不是储存在自己的服务器上,而是来自。
只需要发出一个动态请求,要求向自己提供图片。
这种情况下,提供的就是一种Webservice。
如果把图片都存放在本地服务器,不调用,那么我就是在使用“本地服务”。
所以,Webservice让你的网站可以使用其他网站的资源,比如在网页上显示天气、地图、twitter上的最新动态等等。
2WebService架构和云
如果一个软件的主要部分采用了“网络服务”,即它把存储或计算环节“外包”给其他网站了,那么我们就说这个软件属于WebService架构。
WebService架构的基本思想,就是尽量把非核心功能交给其他人去做,自己全力开发核心功能。
比如,如果你要开发一个相册软件,完全可以使用Flickr的网络服务,把相片都储存到它上面,你只要全力做好相册本身就可以了。
总体上看,凡是不属于你核心竞争力的功能,都应该把它“外包”出去。
最近很红的“云计算”(cloudcomputing)或者“云服务”(cloudservices),实际上就是WebService的同义词,不过更形象一些罢了。
它们不说你把事情交给其他计算机去做,而说你把事情交给“云”去做。
3WebService的优势
WebServcie最主要的优点是,使用不同程序和在不同系统平台上开发出来的程序,都可以相互通信。
SOAP作为WebService的基本通信协议,简单,投入和使用的代价也很小。
WebService使用标准的互联网协议-XML、HTTP和TCP/IP。
WebService有以下的优越性:
1)平台无关。
不管你使用什么平台,都可以使用Webservice。
2)编程语言无关。
只要遵守相关协议,就可以使用任意编程语言,向其他网站要求Webservice。
这大大增加了webservice的适用性,降低了对程序员的要求。
3)对于Webservice提供者来说,部署、升级和维护Webservice都非常单纯,不需要考虑客户端兼容问题,而且一次性就能完成。
4)对于Webservice使用者来说,可以轻易实现多种数据、多种服务的聚合(mashup),因此能够做出一些以前根本无法想像的事情。
4WebService三个基本技术
WebService通过标准通信协议,在互联网上发布有用的程序模块(以服务的方式),目前大部分是用SOAP来作通信协议。
WebService提供一份详细的接口说明书,来帮助用户构建应用程序,这个接口说明书叫作WSDL(WebServiceDescriptionLanguage)。
通常已发布的WebService要注册到管理服务器,这样便于使用者查询和使用。
这个是通过UDDI(UniversalDiscoveryDescriptionandIntegration)来完成的。
4.1SOAP
SOAP是WebService的基本通信协议,是一种规范,用来定义SOAP消息的XML格式(XMLFormat)。
包含在一对SOAP元素(SOAPElements)中的、结构正确的XML段就是SOAP消息。
SOAP规范还介绍了如何将程序数据表示为XML,以及如何使用SOAP进行远程过程调用(RPC)。
最后SOAP规范还定义了HTTP消息是怎样传输SOAP消息的。
这并不代表SOAP只能用HTTP来作为传输协议,MSMQ、SMTP、TCP/IP都可以做SOAP的传输协议。
4.2WSDL
WebServicesDescriptionLanguage的缩写,是一个用来描述Web服务和说明如何与Web服务通信的XML语言。
WSDL是WebService的描述语言,用于描述WebService的服务,接口绑定等,为用户提供详细的接口说明书。
举个例子,你要使用供应商的WebService构建应用程序。
你可以向供应商索取使用WebService的范例,然后按照范例来构建应用程序。
这样可能出现意料不到的错误,比如说,你在程序中使用的客户代码的数据类型是integer,而供应商使用的数据类型是string。
WSDL详细定义客户端消息的格式,需要什么样的参数,这样可以避免不必要的错误。
要查看WSDL的值,可以假设您要调用由您的一位业务伙伴提供的SOAP方法。
您可以要求对方提供一些SOAP消息示例,然后编写您的应用程序以生成并使用与示例类似的消息。
WSDL通过明确的表示法指定请求消息必须包含的内容以及响应消息的样式。
WSDL文件用于说明消息格式的表示法以XML架构标准为基础,这意味着它与编程语言无关,而且以标准为基础,因此适用于说明可从不同平台、以不同编程语言访问的XMLWebService接口。
除说明消息内容外,WSDL还定义了服务的位置,以及使用什么通信协议与服务进行通信。
WSDL文件定义了编写使用XMLWebService的程序所需的全部内容。
4.3UDDI
UniversalDescriptionDiscoveryandIntegration即统一描述、发现和集成协议。
UDDI实现了一组可公开访问的接口,通过这些接口,网络服务可以向服务信息库注册其服务信息、服务需求者可以找到分散在世界各地的网络服务。
UDDI目录条目是介绍所提供的业务和服务的XML文件。
可以把它比喻成电话本,电话本里记录的是电话信息,而UDDI记录的是WebService信息。
你可以不把WebService注册到UDDI。
但如果要让全球的人知道你的WebService,最好还是注册到UDDI。
UDDI目录还包含若干种方法,可用于搜索构建您的应用程序所需的服务。
例如,您可以搜索特定地理位置的服务提供商或者搜索特定的业务类型。
之后,UDDI目录将提供信息、联系方式、链接和技术数据,以便您确定能满足需要的服务。
UDDI允许您查找提供所需的Web服务的公司。
如果您已经知道要与谁进行业务合作,但尚不了解它还能提供哪些服务,这时该如何处理呢?
WS-Inspection规范允许您浏览特定服务器上提供的XMLWebService的集合,从中查找所需的服务。
UDDI目录说明文件也是一个XML文档,它包括下面三个部分:
“白页(WhitePaper)”介绍提供WebService的公司信息,比如名称、地址、联系方式等等;
“黄页(YellowPaper)”说明UDDI目录的分类,包括基于标准分类法的行业类别,比如说金融、服务和印刷等等;
“绿页(greenPaper)”详细介绍了访问服务的接口,以便用户能够编写应用程序以使用Web服务。
5WebService的开源实现
WebService更多是一种标准,而不是一种具体的技术。
不同的平台,不同的语言大都提供WebService的开发实现,在JAVA领域,WebService的框架很多,例如:
Axis1&2,Xfire,CXF,java6自带WebService引擎。
1)从JavaSE6.0开始,Java引入了对WebService的原生支持。
我们只需要简单的使用Java的Annotation标签即可将标准的Java方法发布成WebService。
但不是所有的Java类都可以发布成WebService。
Java类若要成为一个实现了WebService的bean,它需要遵循下边这些原则:
这个类必须是public类
这些类不能是final的或者abstract
这个类必须有一个公共的默认构造函数
这个类绝对不能有finalize()方法
2)Axis2(ApacheeXtensibleInteractionSystem)是Apache下的一个重量级WebService框架,准确说它是一个WebServices/SOAP/WSDL的引擎,是WebService框架的集大成者,它能不但能制作和发布WebService,而且可以生成Java和其他语言版WebService客户端和服务端代码。
这是它的优势所在。
但是,这也不可避免的导致了Axis2的复杂性,使用过的开发者都知道,它所依赖的包数量和大小都是很惊人的,打包部署发布都比较麻烦,不能很好的与现有应用整合为一体。
但是如果你要开发Java之外别的语言客户端,Axis2提供的丰富工具将是你不二的选择。
3)XFire是一个高性能的WebService框架,在Java6之前,它的知名度甚至超过了Apache的Axis2,XFire的优点是开发方便,与现有的Web整合很好,可以融为一体,并且开发也很方便。
但是对Java之外的语言,没有提供相关的代码工具。
XFire后来被Apache收购了,原因是它太优秀了,收购后,随着Java6JWS的兴起,开源的WebService引擎已经不再被看好,渐渐的都败落了。
4)ApacheCXF是Apache旗下一个重磅的SOA简易框架,它实现了ESB(企业服务总线)。
CXF继承了Celtix和XFire两大开源项目的精华,不仅提供了对JAX-WS全面的支持,并且提供了多种Binding、DataBinding、Transport以及各种Format的支持,并且可以根据实际项目的需要,采用代码优先(CodeFirst)或者WSDL优先(WSDLFirst)来轻松地实现WebServices的发布和使用。
而且可以天然的和Spring进行无缝集成。
ApacheCXF已经是一个正式的Apache顶级项目。
6基于Xfire的WebService开发
WebService支持不同语言开发,而不关心服务端或者客户端采用何种语言。
这里讲解利用cxf进行WebService开发。
6.1XFire概述
XFire是codeHaus组织提供的一个开源框架,它构建了POJO和SOA之间的桥梁,主要特性就是支持将POJO通过非常简单的方式发布成Web服务,这种处理方式不仅充分发挥了POJO的作用,简化了Java应用转化为Web服务的步骤和过程,也直接降低了SOA的实现难度,为企业转向SOA架构提供了一种简单可行的方式。
XFire目前最新的版本是1.2.2,目前支持的特性主要包括:
1.支持将Web服务绑定到POJO、XMLBeans、JAXB1.1、JAXB2.0和Castor;
2.支持基于HTTP、JMS、XMPP等多种协议访问Web服务;
3.支持多种Web服务业界重要标准如SOAP、WSDL、Web服务寻址(WS-Addressing)、Web服务安全(WS-Security)等;
4.支持JSR181,可以通过JDK5配置Web服务;
5.高性能的SOAP实现;
6.服务器端、客户端代码辅助生成;
7.对Spring、Pico、Plexus等项目的支持等。
6.2XFire安装包
XFire框架目前的最新版本是1.2.6,可以访问xfire.codehaus.org下载XFire框架的安装包,下载时请选择“全部二进制发布包(BinaryDistributioninzippackage)”,而不仅仅是“XFirejar文件(JarofallXFiremodules)”。
下载完成后,我们可以将下载的.zip文件解压缩到任意的文件夹中(后面的章节中使用%XFIRE_HOME%表示XFire框架的安装目录),解压缩后形成的文件目录结构如下:
1.api(目录)
api目录中是XFire框架中所有类(class)对应的API文档,为开发者使用XFire完成应用开发提供帮助。
2.examples(目录)
examples目录中包含了所有随XFire二进制包发布的实例,包括这些实例的源代码和相关Web应用配置内容。
3.lib(目录)
lib目录中包含XFire运行所需要的外部支持类包(.jar文件),可以根据不同项目所需的XFire特性选择所需要的支持类包。
保守的方法是在Web项目中包含所有的外部支持类包(.jar文件)。
∙manual(目录)
manual目录中包含有XFire框架的帮助文档,开发者可以从这些帮助文档中学习更多运用XFire框架实现SOA的知识和技巧。
4.modules(目录)
modules目录中包含了XFire框架根据不同特性分别编译的二进制包文件。
发布基于XFire框架的Web项目时,可以选择使用该目录下的所有.jar文件,也可以选择XFire-all-1.2.6.jar文件。
5.XFire-all-1.2.6.jar
XFire框架的二进制包文件,包含了全部的模块(modules)。
6.LICENSE.txt
LICENSE.txt文件中包含了XFire框架的授权协议。
7.NOTICE.txt
8.README.txt
这两个文件中包含了XFire发布时的一些有用的信息。
6.3XFire框架支撑环境
XFire框架是一种基于Servlet技术的SOA应用开发框架,要正常运行基于XFire应用框架开发的企业应用,除了XFire框架本身之外,还需要JDK和Servlet容器的支持。
6.3.1JDK版本选择、下载和安装
XFire支持非常多的特性,其中不同的特性对JDK版本的要求有所不同,比如如果项目中选择基于JSR181标准发布Web服务,我们就需要选择JDK5或者以上版本,如果仅仅选择将Web服务绑定到最简单的POJO,我们只需要选择JDK1.4版本即可。
JDK各版本均可以在网站上下载,如何安装JDK请参考SUN公司的相关技术文档和JDK的帮助文档。
6.3.2Servlet容器下载和安装
XFire是一种基于Servlet技术的SOA应用开发框架,需要Servlet容器的支持。
XFire支持在多种Servlet容器中运行,包括Websphere、Weblogic、TOMCAT等。
为了说明的简单,我们选择使用TOMCAT(版本5.0.30)作为XFire的运行容器,所有配置过程和发布步骤的说明也均是针对TOMCAT,如果读者使用TOMCAT之外的其它Servlet容器或者选择了TOMCAT的其它版本,下面的配置过程和步骤可能需要做出调整,请读者根据实际Servlet容器的帮助文档进行相应调整。
TOMCAT各版本均可以在tomcat.apache.org网站上下载,如何正确安装TOMCAT服务器请参考TOMCAT服务器的帮助文档。
6.3.3xalan
XFire需要xalan项目的支持,然而1.2.6版本中并没有带有相应的jar文件,因此请访问xml.apache.org,下载xalan项目的二进制包。
6.4XFire应用配置
前面的章节中我们下载和安装了XFire安装包和所需要的支持环境,现在我们开始学习如何从零开始创建XFire应用开发环境。
下面的所有配置过程和发布步骤均针对TOMCAT(版本5.0.30)服务器,如果选择其它的Servlet容器,下面的配置过程和步骤可能需要做出调整,请读者根据实际Servlet容器的帮助文档进行相应调整。
6.4.1创建Web应用目录和基本元素
1.%TOMCAT_HOME%/webapps目录下创建新的Web应用目录“XFire”。
2.[注]其中的%TOMCAT_HOME%指向TOMCAT的安装目录。
3.在“XFire”目录下创建“WEB-INF”目录。
4.在“WEB-INF”目录下创建“lib”目录和“classes”目录。
5.在“WEB-INF”目录下创建Web应用描述文件“web.xml”,“web.xml”文件的内容见清单1-1。
清单1-1WEB-INF\web.xml
xmlversion="1.0"encoding="ISO-8859-1"?
>
xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation=" version="2.4"> 基于XFire框架发布Web服务的例子 6.4.2拷贝XFire所需的支持类包文件 拷贝%XFIRE_HOME%/lib目录下所有文件到“创建Web应用目录和基本元素”中所创建的“lib”目录下,将%XFIRE_HOME%/XFire-all-1.2.6.jar文件也拷贝到“创建Web应用目录和基本元素”中所创建的“lib”目录下。 将xalan安装包中的所有jar文件和所需要的支持jar文件拷贝到相同的“lib”目录下。 [注]为了减少拷贝的jar文件的数目,开发者可以根据项目的需要选择需要拷贝的jar文件,而不是全部拷贝,如何根据需要选择拷
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 使用 WebService 详解