基于JAX-WS的成绩查询服务设计说明书1Webservice相关模型及理论1.1Webservice介绍从表面上看,WebService就是一个应用程序,该应用程序向外界提供了一个能够通过Web进行调用的API。即用编程的方法通过Web调用来实现某个功能的应用程序。如图:Webservice服务器端API接口客户端应用程序发布服务调用服务创建WebService,该WebService作用是查询天气预报地信息。接受查询条件字符串,通过SOAP协议将客户端请求信息发送到WebService服务发布服务器上,WebService服务端接收用户请求信息,调用中间层组件,把结果格式化为xml数据形式,最后还要通过SOAP协议将结果数据发挥客户端,客户端通过浏览器即可查看该信息。如图:Webservice服务器端API接口Webservice查询数据库请求服务客户端浏览器数据库调用API生成XML数据文件返回XML数据文件从深层次上看,WebService是一种新的Web应用程序分支,它们是自包含、自描述、模块化的应用,可以在网络(通常为Web)中被描述、发布、查找以及通过Web来调用。WebService便是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得WebService能与其他兼容的组件进行互操作。它可以使用标准的互联网协议,像超文本传输协议HTTP和XML,将功能体现在互联网和企业内部网上。WebService平台是一套标准,主要目标是跨平台的可互操作性。为了达到这一目标,WebService完全基于XML(可扩展标记语言)、XSD(XMLSchema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。你可以用你喜欢的任何语言,在你喜欢的任何平台上写WebService。1.2WebService的技术支持WebService平台需要一套协议来实现分布式应用程序的创建。要实现互操作性,平台无关性,WebService平台必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。目前这些协议有:1.2.1XML和XSDXML是可扩展的标记语言,是WebService平台中表示数据的基本格式。其易于建立、易于分析和平台无关。XML是由万维网协会(W3C)创建,W3C制定的XMLSchemaXSD定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。XSD是XML结构定义(XMLSchemasDefinition)。XMLSchema是DTD的替代品。XMLSchema语言也就是XSD。XMLSchema描述了XML文档的结构。可以用一个指定的XMLSchema来验证某个XML文档,以检查该XML文档是否符合其要求。文档设计者可以通过XMLSchema指定一个XML文档所允许的结构和内容,并可据此检查一个XML文档是否是有效的。XMLSchema本身是一个XML文档,它符合XML语法结构。可以用通用的XML解析器解析。WebService平台是用XSD来作为数据类型系统的。当用某种语言如Java、VB.NET或C#来构造一个WebService时,为了符合WebService标准,所使用的数据类型都必须被转换为XSD类型。并使用SOAP协议使其在不同平台和不同软件的不同组织间传递。1.2.2SOAP协议SOAP(SimpleObjectAccessProtocol)即简单对象访问协议,用于交换XML编码信息的轻量级协议。主要有三个方面:XML-envelope为描述信息内容和如何处理内容定义了框架,将程序对象编码成为XML对象的规则,执行远程过程调用(RPC)的约定。SOAP可以运行在任何其他传输协议上。例如,可以使用SMTP(简单邮件传输协议)来传递SOAP消息。在传输层之间的头是不同的,但XML的有效负载保持相同。简单对象访问协议(SOAP)是一种轻量的、简单的、基于XML的协议,它被设计成在Web上交换结构化的和固化的信息。SOAP可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。还支持从消息系统到远程过程调用(RPC)等大量的应用程序。SOAP包括三个部分:SOAP封装:它定义了一个框架,该框架描述了消息中的内容是什么,谁应当处理它以及它是可选的还是必须的。SOAP编码规则:它定义了一种序列化的机制,用于交换应用程序所定义的数据类型的实例。SOAPRPC表示:它定义了用于表示远程过程调用和应答的协定。SOAP消息基本上是从发送端到接收端的单向传输,但它们常常结合起来执行类似于请求/应答的模式。所有的SOAP消息都使用XML编码。一条SOAP消息就是一个包含有一个必需的SOAP的封装包,一个可选的SOAP标头和一个必需的SOAP体块的XML文档。把SOAP绑定到HTTP提供了同时利用SOAP的样式和分散的灵活性的特点以及HTTP的丰富的特征库的优点。在HTTP上传送SOAP并不是说SOAP会覆盖现有的HTTP语义,而是HTTP上的SOAP语义会自然的映射到HTTP语义。在使用HTTP作为协议绑定的场合中,RPC请求映射到HTTP请求上,而RPC应答映射到HTTP应答。然而,在RPC上使用SOAP并不仅限于HTTP协议绑定。在本系统中,采用的是基于SOAP协议的直接的Webservice的调用。1.2.3UDDIUDDI(UniversalDescription,DiscoveryandIntegration)统一描述、发现和集成协议,是为解决Web服务的发布和发现问题而制订的新一代基于Internet的电子商务技术标准。它包含一组基于Web的、分布式的Web服务信息注册中心的实现标准,以及一组使企业能将自己提供的Web服务注册到该中心的实现标准。UDDI的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为WebService提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的WebService注册,以使别的企业能够发现的访问协议的实现标准。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件。UDDI(UniversalDescription,Discovery,andIntegration)是一个主要针对Web服务供应商和使用者的新项目。UDDI项目中的成员可以通过UDDIBusinessRegistry(UBR)来操作Web服务的调用,UBR是一个全球性的服务。Web服务供应商可以在UBR中描述并且注册他们的服务。用户可以在UBR中查找并定位他们所需要的服务。UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布、编辑,浏览以及查找注册信息。采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。1.2.4WSDLWebService描述语言WSDL就是用机器能阅读的方式提供的一个正式描述文档而基于XML的语言,用于描述WebService及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。WSDL在UDDI中总是作为一个接口描述文档。因为UDDI是一个通用的用来注册WSDL规范的地方,UDDI的规范并不限制任何类型或者格式描述文档。这些文档可能是一个WSDL文档,或者是一个正规的包含导向文档的Web页面,也可能只是一个包含联系信息的电子邮件地址。现在Java提供了一个JavaAPIforWSDL(JWSDL)规范。WSDL提供了一套能快速处理WSDL文档的方法,并且不用直接对XML文档进行操作,它会比JAXP更方便,更快速。1.2.5远程过程调用RPC与消息传递WebService本身其实是在实现应用程序间的通信。现在有两种应用程序通信的方法:RPC远程过程调用和消息传递。RPC远程过程调用,客户端的概念是调用服务器上的远程过程,通常方式为实例化一个远程对象并调用其方法和属性。RPC系统试图达到一种位置上的透明性:服务器暴露出远程对象的接口,而客户端就好像在本地使用的这些对象的接口一样,这样就隐藏了底层的信息,客户端也就根本不需要知道对象是在哪台机器上。2当前Webservice开发技术2.1微软.NET微软的.NET技术应该算是现在最为流行的WebService开发技术。首先因为其公司在以前相应的产品就占有相当大的市场份额,以至使新推出的.NET得以有比较稳定的用户群;其次也是更重要的是.NET平台不仅延续了微软一贯的编程风格,而且还增加了许多支持Web服务的关键性技术,使得.NET在操作的简单性和执行的稳定性,高效性上达到了一个非常好的结合。微软的VisualStudio.NET便是一个便于Web服务的开发工具。微软的目标是,将其新编程语言——C#作为WebService的首选语言。虽然C#看起来与Java类似,但是还有一些Java中没有的独特的功能。.NET技术中用于WebService开发的主要工具是ASP.NET。ASPasp.net提供了一些超出ASP以前版本的优点(例如:代码和HTML的分离,支持C#语言等)。2.2Sun的JavaWSDP针对开发WebServices程序的需求,Sun推出了JavaWebServicesDeveloperPack,简称JavaWSDP。随着1.2版本的发布,Java开发人员现在可以拥有一个方便的、集所有功能于一身的开发包,用来帮助在Java平台上开发Web服务。JavaWSDP包含JavaXMLPack中的所有用于XML的JavaAPI(JavaAPIsforXML(JAX)),还包含有ApacheTomcat服务器以及为开发与测试Web服务提供一个功能完备的环境所需的其他组件。JavaWSDPRegistryServer(UDDIServer)。2.3IBM的WebSphereIBM公司是业界第一家能够提供全面支持Web服务的电子商务基础设施中间件的公司。通过多年来与W3C(TheWorldWideWebConsortium)的共同努力,包括DB2、Lotus、Tivoli和WebSphere在内的所有IBM软件都实现了对SOAP、WSDL、UDDI、Linux、XML、J2EE等开放技术和标准的全面支持。IBM公司的WebSphere也是比较好的基础架构软件开发平台。WebSphere软件平台及开发工具包括WSAD(WebSphereStudioApplicationDeveloper)基于J2EE、XML和Web服务等开放标准,并具备IBM在可靠性、扩展性和安全性上的主要优势。WebSphere是IBM在WebServices策略中的核心平台,它支持所有开发、发布、部署WebServices应用所必需的开放标准和技术,包括UDDI,SOAP,J2EE,WSDL,和对XML技术集成的增强,这特使得它在全球有很多用户。2.4ApAche的AxisAxis本质上就是一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。Axis目前版本是为Java语言。Axis是Eclipse下的Lomboz插件。2.5JAX-WS开发的相关技术3系统实现的详细过程在实际Webservice项目开发中,分为Webservice服务发布端和客户端开发,由于本系统的主要是基于Internet上已发布的Webservice服务的客户端开发,因此本章主要介绍客户端的开发过程,有关Webservice服务发布端的开发,将使用ApAche的jax-ws来进行发布。3.1创建服务端创建一个JAVA项目,并创建一个包,包里有一个类,然后在这个项目里创建一个WebServieces,然后导入相关包,接着发布在Tomcat7.0上。如下图,3.1.2生成xml文件发