于基jaxws的成绩查询服务设计说明书大学论文.docx

上传人:b****2 文档编号:22985993 上传时间:2023-04-29 格式:DOCX 页数:10 大小:118.37KB
下载 相关 举报
于基jaxws的成绩查询服务设计说明书大学论文.docx_第1页
第1页 / 共10页
于基jaxws的成绩查询服务设计说明书大学论文.docx_第2页
第2页 / 共10页
于基jaxws的成绩查询服务设计说明书大学论文.docx_第3页
第3页 / 共10页
于基jaxws的成绩查询服务设计说明书大学论文.docx_第4页
第4页 / 共10页
于基jaxws的成绩查询服务设计说明书大学论文.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

于基jaxws的成绩查询服务设计说明书大学论文.docx

《于基jaxws的成绩查询服务设计说明书大学论文.docx》由会员分享,可在线阅读,更多相关《于基jaxws的成绩查询服务设计说明书大学论文.docx(10页珍藏版)》请在冰豆网上搜索。

于基jaxws的成绩查询服务设计说明书大学论文.docx

于基jaxws的成绩查询服务设计说明书大学论文

 

基于JAX-WS的成绩查询服务

设计说明书

1Webservice相关模型及理论

1.1Webservice介绍

从表面上看,WebService就是一个应用程序,该应用程序向外界提供了一个能够通过Web进行调用的API。

即用编程的方法通过Web调用来实现某个功能的应用程序。

如图:

创建WebService,该WebService作用是查询天气预报地信息。

接受查询条件字符串,通过SOAP协议将客户端请求信息发送到WebService服务发布服务器上,WebService服务端接收用户请求信息,调用中间层组件,把结果格式化为xml数据形式,最后还要通过SOAP协议将结果数据发挥客户端,客户端通过浏览器即可查看该信息。

如图:

从深层次上看,WebService是一种新的Web应用程序分支,它们是自包含、自描述、模块化的应用,可以在网络(通常为Web)中被描述、发布、查找以及通过Web来调用。

WebService便是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得WebService能与其他兼容的组件进行互操作。

它可以使用标准的互联网协议,像超文本传输协议HTTP和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可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(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.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/HTTP)来发布、编辑,浏览以及查找注册信息。

采用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插件。

 

2.5JAX-WS开发的相关技术

 

3系统实现的详细过程

在实际Webservice项目开发中,分为Webservice服务发布端和客户端开发,由于本系统的主要是基于Internet上已发布的Webservice服务的客户端开发,因此本章主要介绍客户端的开发过程,有关Webservice服务发布端的开发,将使用ApAche的jax-ws来进行发布。

3.1创建服务端

创建一个JAVA项目,并创建一个包,包里有一个类,然后在这个项目里创建一个WebServieces,然后导入相关包,接着发布在Tomcat7.0上。

如下图,

3.1.2生成xml文件

发布成功后我们可以在浏览器里看到下图:

3.1.3创建客户端

创建一个WebserversClient,把它与建好的服务器所关联。

3.1.4客户端实现查询关键代码

publicclassClientTest{

publicstaticvoidmain(String[]args)

{

HelloJaxWsServicesservices=newHelloJaxWsServices();

//HelloJaxWsDelegateservices=newHelloJaxWsService().getHelloJaxWsPort();

System.out.print("请输入您的姓名:

");

Scannersc=newScanner(System.in);

StringstrName=sc.next();

System.out.print("请输入年:

");

intstrYear=sc.nextInt();

System.out.print("请输入学期(1或者2):

");

intstrMonth=sc.nextInt();

if((strMonth!

=1)||(strMonth!

=2))

{

System.out.print("您输入的学期不存在!

");

System.out.print("请输入学期(1或者2):

");

strMonth=sc.nextInt();

}

DoublestrCourse=services.course(strYear,strMonth);

System.out.print(services.sayHello(strName));

System.out.print("\n"+strCourse.toString().substring(0,2));

}

}

3.1.4测试

4总结

参考文献

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1