课程设计基于Webservice信息查询系统的设计说明Word格式文档下载.docx
《课程设计基于Webservice信息查询系统的设计说明Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《课程设计基于Webservice信息查询系统的设计说明Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
webapps"
unpackWARs="
true"
autoDeploy="
xmlValidation="
false"
xmlNamespaceAware="
>
……
/Host>
中加入如下配置,
Contextpath="
/webservicetest"
reloadable="
docBase="
项目所在位置\webservicetest\WebRoot"
workDir="
项目所在位置\webservicetest"
/>
;
重新启动tomcat,在浏览器中输入:
localhost:
8090/webservicetest(其中8090为测试机tomcat端口号),进入系统。
3、使用本系统需是计算机处在联网状态,才能访问Internet上发布的Webservice服务的功能。
4、由于在Internet上未找到可用的“旅游城市信息查询”的Webservice服务,故该功能暂时无法进行测试使用。
摘要
WebService是构建互联网分布式系统的基本部件,已正成为企业应用集成(EnterpriseApplicationIntegration)的有效平台。
在互联网中可以直接调用WebService构建应用程序,而不必考虑这些WebService部是怎么实现的。
WebService通过标准通信协议,通过使用SOAP通信协议,在互联网上发布webService服务程序模块(以服务的方式)。
WebService发布一份详细的WSDL(WebServiceDescriptionLanguage)接口说明,来帮助用户构建应用程序。
WebService将服务注册到管理服务器,通过UDDI(UniversalDiscoveryDescriptionandIntegration)文档说明服务接口,用户查询和使用所发布的webService服务。
WebService是一种新的web应用程序,是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。
可以执行从简单的请求到复杂商务处理的任何功能。
部署以后,其他WebService应用程序可以发现并调用它部署的服务。
关键词:
Webservice;
WSDL;
SOAP;
XML;
旅游城市信息、天气预报、人民币汇率、手机归属地;
1Webservice相关模型与理论
1.1Webservice介绍
从表面上看,WebService就是一个应用程序,该应用程序向外界提供了一个能够通过Web进行调用的API。
即用编程的方法通过Web调用来实现某个功能的应用程序。
如图:
创建WebService,该WebService作用是查询旅游城市信息、天气预报、人民币汇率、手机归属地信息。
接受查询条件字符串,通过SOAP协议将客户端请求信息发送到WebService服务发布服务器上,WebService服务端接收用户请求信息,调用中间层组件,把结果格式化为xml数据形式,最后还要通过SOAP协议将结果数据发挥客户端,客户端通过浏览器即可查看该信息。
从深层次上看,WebService是一种新的Web应用程序分支,它们是自包含、自描述、模块化的应用,可以在网络(通常为Web)中被描述、发布、查找以与通过Web来调用。
WebService便是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规,这些规使得WebService能与其他兼容的组件进行互操作。
它可以使用标准的互联网协议,像超文本传输协议和XML,将功能体现在互联网和企业部网上。
WebService平台是一套标准,主要目标是跨平台的可互操作性。
为了达到这一目标,WebService完全基于XML(可扩展标记语言)、XSD(XMLSchema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。
你可以用你喜欢的任何语言,在你喜欢的任何平台上写WebService。
1.2WebService的技术支持
WebService平台需要一套协议来实现分布式应用程序的创建。
要实现互操作性,平台无关性,WebService平台必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。
目前这些协议有:
1.2.1XML和XSD
XML是可扩展的标记语言,是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可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(),简单传输协议(SMTP),多用途网际扩充协议(MIME)。
还支持从消息系统到远程过程调用(RPC)等大量的应用程序。
SOAP包括三个部分:
SOAP封装:
它定义了一个框架,该框架描述了消息中的容是什么,谁应当处理它以与它是可选的还是必须的。
SOAP编码规则:
它定义了一种序列化的机制,用于交换应用程序所定义的数据类型的实例。
SOAPRPC表示:
它定义了用于表示远程过程调用和应答的协定。
SOAP消息基本上是从发送端到接收端的单向传输,但它们常常结合起来执行类似于请求/应答的模式。
所有的SOAP消息都使用XML编码。
一条SOAP消息就是一个包含有一个必需的SOAP的封装包,一个可选的SOAP标头和一个必需的SOAP体块的XML文档。
把SOAP绑定到提供了同时利用SOAP的样式和分散的灵活性的特点以与的丰富的特征库的优点。
在上传送SOAP并不是说SOAP会覆盖现有的语义,而是上的SOAP语义会自然的映射到语义。
在使用作为协议绑定的场合中,RPC请求映射到请求上,而RPC应答映射到应答。
然而,在RPC上使用SOAP并不仅限于协议绑定。
在本系统中,采用的是基于SOAP协议的直接的Webservice的调用。
1.2.3UDDI
UDDI(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/)来发布、编辑,浏览以与查找注册信息。
采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。
1.2.4WSDL
WebService描述语言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。
ASP提供了一些超出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的WebSphere
IBM公司是业界第一家能够提供全面支持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的Axis
Axis本质上就是一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。
Axis目前版本是为Java语言。
Axis是Eclipse下的Lomboz插件。
3系统设计与实现
在实际Webservice项目开发中,分为Webservice服务发布端和客户端开发,由于本系统的主要是基于Internet上已发布的Webservice服务的客户端开发,因此本章主要介绍客户端的开发过程,有关Webservice服务发布端的开发,将使用ApAche的Axis2来进行发布。
3.1服务发布端—Axis2配置
3.1.1搭建axis2环境
将axis2.war包拷到Tomcat根目录webapps目录下,然后启动Tomcat,访问localhost:
8080/axis2/,显示Axis2欢迎页面,则axis2已经部署成功。
3.1.2生成wsdl文件
将axis2的lib拷入项目的lib文件夹下,在build.xml的Outline视图中右键生成wsdl,并按要求修改wsdl文件,如生成的客户端或服务端的类名等。
3.1.3生成server端的.java文件
在build.xml的Outline视图中右键generate.service,控制台显示buildsuccessful后会生成对应的一些service提供类。
3.1.4生成server端的.java文件
在build.xml的Outline视图中右键aar.service,生成service提供类的aar文件,启动tomcat服务器,然后在浏览器中访问:
8090/axis2/,选择左侧的Tools中的上传Service,选择刚生成的aar文件,则服务端的webservice服务发布完成。
3.2客户端设计与实现
3.2.1搭建项目架构
在Eclipse下建立一个web项目,将axis相关开发包拷到项目目录中。
项目目录结构如下:
3.2.2模块代码开发
在weather包下建立GetCityWeather将Action类,作为天气预报查询服务的servlet处理类,该类将调用business包下的WeatherService类的业务处理方法,该方法通过SOAP协议调用服务器端的webservice服务,得到服务器端的查询结果数据。
GetCityWeather类的接口函数如下:
publicvoiddoPost(ServletRequestreq,ServletResponseresp)
throwsServletException,IOException
{
Stringprovice=req.getParameter("
province1"
);
//查询的省份名字
Stringcity=req.getParameter("
city1"
//获取查询城市的名字
System.out.println("
输出参数:
*************:
省:
"
+provice+"
市:
+city);
List<
String>
weatherList=WeatherService.getWeatherService(provice,city);
PrintWriterpw=resp.getWriter();
if(weatherList!
=null&
&
weatherList.size()>
=0){
for(Stringweather:
weatherList)
{
pw.println("
fontsize='
2'
color='
blue'
+weather+"
/font>
br>
}
}else
pw.println("
+"
没有查到你要的城市!
请确认您的查询条件!
}
WeatherService类的接口函数如下:
/**
*获得SOAP协议发回数据流
*paramurl服务器端url
*return
*/
publicstaticInputStreamgetSoapInputStream(Stringurl)
}
*服务调用接口函数
*paramprovinceName
*paramcityName
publicstaticList<
getWeatherService(StringprovinceName,StringcityName){
3.2.3WSDL文件分析
在浏览器中输入
3.2.4解析XML数据文件
在客户端接收到服务器端通过SOAP协议发回的XML数据文件,根据借口说明文件,来解析XML文件,将解析出来的服务器端数据显示出来。
在浏览器中输入:
点击上图的getWeather,然后点击“调用”,看一看到服务器端发回的XML文件的格式如下:
?
xmlversion="
1.0"
encoding="
utf-8"
?
-<
ArrayOfStringxmlns:
xsi="
.w3.org/2001/XMLSchema-instance"
xmlns:
xsd="
.w3.org/2001/XMLSchema"
xmlns="
WebX
string>
直辖市<
/string>
2013<
2010/02/0120:
16:
40<
今日天气实况:
气温:
7.8℃;
风向/风力:
西北风小于3级;
湿度:
66%;
气压:
1022.9hPa<
空气质量:
良;
紫外线强度:
最弱<
穿衣指数:
天气凉,建议着厚外套加毛衣等春秋服装。
年老体弱者宜着大衣、呢外套加羊毛衫。
感冒指数:
相对于今天将会出现大幅度降温,易发生感冒,注意增加衣服,加强自我防护避免感冒。
晨练指数:
早晨天气寒冷,风力稍大,请尽量避免户外晨练,若坚持户外晨练请注意保暖防冻。
洗车指数:
不宜洗车,未来24小时有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。
晾晒指数:
天气晴朗,午后温暖的仍能满足你驱潮消霉杀菌的晾晒需求。
旅游指数:
天空状况还是比较好的,但温度稍微有点低,且风稍大,会让您感觉些许凉意。
外出请注意防风。
路况指数:
晴天,其它条件适宜,路面比较干燥,路况较好。
舒适度指数:
白天天气晴好,但仍会使您感觉偏冷,不很舒适,请注意适时添加衣物,以防感冒。
2月2日小雨<
2℃/6℃<
东北风3-4级转东风3-4级<
7.gif<
2月3日小雨转阴<
2℃/5℃<
东风3-4级<
2.gif<
2月4日小雨<
5℃/6℃<
东北风3-4级<
2月5日阴转小雨<
7℃/8℃<
东风3-4级转东南风3-4级<
2月6日小雨<
7℃/9℃<
东南风3-4级<
/ArrayOfString>
根据上面的XML文