Web服务实用技术_第1页
Web服务实用技术_第2页
Web服务实用技术_第3页
Web服务实用技术_第4页
Web服务实用技术_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Web服务实用技术主讲:李伟刚西北工业大学软件与微电子学院第一页,共四十二页。第八章Web服务实现技术第二页,共四十二页。主要内容Web服务开发方法Web服务运行环境AXIS基于AXIS的Web服务开发第三页,共四十二页。第一节Web服务开发方法第四页,共四十二页。TwoApproachesServer

ImplementationService

InterfaceWSDLe.g.EJB/JavaClasstoWSDLe.g.WSDLcontractasthe

interface&messagedescriptionServer

InterfaceService

ImplementationWSDLBottomUpTopDown第五页,共四十二页。Web服务开发生命周期开发开发和测试Web服务实现、定义服务接口描述和定义服务实现描述。通过创建新的Web服务、把现有的应用程序变成Web服务由其它Web服务和应用程序组成新的Web服务提供Web服务的实现。部署向服务请求者或服务注册中心发布服务接口和服务实现的定义Web服务的可执行文件部署到执行环境运行调用Web服务Web服务完全部署、可操作并且服务提供者可以通过网络访问服务管理持续的管理和经营Web服务应用程序。安全性、可用性、性能、服务质量和业务流程第六页,共四十二页。构建WebService1.编写代码2.打包以便布署3.布署到应用服务器4.创建WSDL描述5.发布描述6.发现-通过UDDI7.绑定、调用第七页,共四十二页。第八页,共四十二页。访问WebService1.开发新应用2.查询UDDI3.定位Web服务、下载其描述4.根据描述创建Javaclientproxy5.在应用中编写调用Javaclientproxymethods代码6.测试应用7.Javaclientproxy通过SOAP调用Webservicemethods第九页,共四十二页。第十页,共四十二页。第二节Web服务运行环境第十一页,共四十二页。WebServiceRuntime1.提交请求(参数)给应用服务器,服务器调用Javaservlet.2.Servlet调用本地Javaproxy方法,proxy调用SOAP客户端运行3.SOAP客户端发送HTTP请求(方法、参数)给提供者.4.SOAPservlet准备方法和参数,instantiates服务bean,调用服务方法5.访问legacy资源6.SOAPservlet返回结果给请求者SOAPclient.7.SOAPclient返回结果给Javaproxy.8.servlet把结果放在一个databean中,dispatch查询结果的JSP9.JSP发送HTML给用户,页面中包含有服务返回的结果第十二页,共四十二页。第十三页,共四十二页。第三节AXIS第十四页,共四十二页。AxisIntroductionAxis是Apache组织推出的Web服务引擎Axis本质上就是一个Web服务引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。但Axis还包括:一个独立的WebService服务器。一个嵌入Servlet引擎(Tomcat)的服务器。

支持WSDL。

提供转化WSDL为Java类的工具。

提供例子程序。

提供TCP/IP数据包监视工具。第十五页,共四十二页。Axis2体系结构AXIS对象模型(AXIsObjectModel,AXIOM)是ApacheAxis2的XML对象模型内核层包含引擎、模块和部署框架所有其他组件都在内核之上的层中各种传输协议(如HTTP和SMTP)和数据绑定(在XML和Java代码之间进行转换)并不在核心中,因为它们是可插入的,因此提供了很大的灵活性所有其他相关技术(如JavaAPIforXMLWebServices(JAX-WS))都在Axis2之上的层次中第十六页,共四十二页。AXIOMAXIOM是一个XML对象模型,设计用于提高XML处理期间的内存使用率和性能,基于Pull解析通过使用StreamingAPIforXML(StAX)Pull解析器,AXIOM可以控制解析过程,以提供延迟构建支持StAX通过提供一种基于事件迭代器(Iterator)的API让程序员去控制xml文档解析过程程序遍历这个事件迭代器去处理每一个解析事件,解析事件可以看做是程序拉出来的,也就是程序促使解析器产生一个解析事件然后处理该事件,之后又促使解析器产生下一个解析事件,如此循环直到碰到文档结束符SAX也是基于事件处理xml文档,但却是用推模式解析,解析器解析完整个xml文档后,才产生解析事件,然后推给程序去处理这些事件DOM采用的方式是将整个xml文档映射到一颗内存树,这样就可以很容易地得到父节点和子结点以及兄弟节点的数据,但如果文档很大,将会严重影响性能延迟构建是指AXIOM不完全构建XML对象模型,而是基于用户的需求构建第十七页,共四十二页。AXIOM(续)例子:从XML输入流中获得第一个人的<Location>元素值XML文档<Persons><Person><Name>DihiniHimahansi</Name><Sex>Female</Sex><Location>Colombo,SriLanka</Location>

<---Objectmodelisbeingbuiltonlyuptothispoint</Person><Person><Name>ThushariDamayanthi</Name><Sex>Female</Sex><Location>Elpitiya,SriLanka</Location></Person></Persons>

第十八页,共四十二页。AXIOM(续)优势尽可能仅使用能满足用户的需求的内存如果用户希望访问较大的文档中前面的数个字节或数千字节,则延迟构建功能将改善该应用程序的内存需求情况可以从任何元素获得StAX事件,而不管是否完整构建了对象模型应用案例:当Axis2作为中介传递时,如果需要仅读取SOAP消息的Header,AXIOM将防止其读取整个SOAP消息,使其具有很高的内存效率当Web服务实现能够直接使用StAX事件时,由于采用了AXIOM,Web服务所需的内存非常小第十九页,共四十二页。AXIOM(续)AXIOM内置了消息传输优化机制(MessageTransferOptimizationMechanism,MTOM)支持对于AXIOM体系结构,可以通过实现AXIOM接口并将其插入到Axis2中来执行自己的对象模型AXIOM提供了构建于基础AXIOMAPI之上的SOAP接口可以使用envelope.getHeaders和envelope.getBody之类的便利方法查看SOAP第二十页,共四十二页。可扩展消息传递引擎Axis2是一个纯SOAP处理器,并不依赖于任何Java特定的规范引擎通过传输协议接收到消息后,将调用之前注册的一系列拦截器(称为处理程序)处理程序通常处理SOAPHeader内的信息,也可以同时对消息的其他部分进行处理随后会将消息传递给消息接收者——一般将此消息传递给服务实现类进行处理第二十一页,共四十二页。可扩展消息传递引擎(续)Axis2的管道模型Axis2引擎的传入消息会通过“In”管道。所有传出消息都会通过“Out”管道通过组合使用不同数量的In和Out管道,Axis2可以处理任何MEP(MessageExchangePattern)阶段每个Axis2管道内部被逻辑划分为名为阶段(Phase)

的区域按特定的方式对这些阶段进行命名,以表示在该阶段对消息的处理方式这些阶段都会有用处,特别是尝试部署新处理程序时,因为我们可以指定处理程序需要在哪个阶段中执行

第二十二页,共四十二页。可扩展消息传递引擎(续)上下文层次结构Axis2环境需要在不同的级别保存信息例如,整个引擎公用的信息应该在系统级别进行维护,而消息级别的信息应该保存在消息级别。有些信息是动态的,而有些信息是静态的为了处理这些不同的需求,Axis2提供了上下文层次结构来在不同级别维护信息

第二十三页,共四十二页。可扩展消息传递引擎(续)调度传入Axis2引擎的每条消息都以特定服务和操作为目标。标识此服务/操作组合的过程称为调度,Axis2引擎提供了进行此工作的四种基本方法:基于请求URI进行调度

传输信息:可以将SOAPActionHTTPHeader用于确定服务和操作WS-AddressingHeader:如果传入消息包含WS-AddressingHeader,也可以将其用于进行调度如果SOAP主体的第一个子项的QName是使用RPC规则定义的,则也可以使用此名称第二十四页,共四十二页。可插入模块体系结构模块为服务器提供了一个扩展机制Axis2中的每个模块都包含一组相关的处理程序第二十五页,共四十二页。可插入模块体系结构(续)模块的类型Sandesha2模块:提供WS-ReliableMessaging支持WS-Addressing模块:为Axis2提供WS-Addressing支持Rampart和Rahas模块:提供WS-SX(安全相关规范)支持Kandula模块:提供WS-AT支持Savan模块:提供WS-Eventing支持第二十六页,共四十二页。可插入模块体系结构(续)模块的级别系统级别:模块将影响整个系统,此模块中的处理程序将应用于传入系统的所有消服务级别:此模块中的处理程序将应用于以特定服务为目标的消息。这些处理程序应该始终部署在调度阶段后操作级别:此模块中的处理程序将应用于以特定操作为目标的消息。这些处理程序应该始终部署在调度阶段后第二十七页,共四十二页。改进的部署模型Axis2现在支持将服务热部署到Axis2引擎中——热部署服务应该存档为ZIP文件,且在文件名中使用.aar(Axis2存档,Axis2archive)作为扩展名服务存档包含以下信息:服务实现类Services.xml文件描述其使用的消息接收者、所需的任何模块和可用的操作可选依赖库打包在lib文件夹内第二十八页,共四十二页。其他特性新客户机API可插入数据绑定REST支持(REpresentationalStateTransfer,REST)WSDL2.0支持:Axis2现在支持WSDL2.0。我们在最近进行的互操作性研讨会中成功地进行了初始互操作性测试。工具支持:Axis2随附了WSDL2Java和Java2WSDL工具,同时提供了与Axis2协同工作的Eclipse插件各种传输协议支持:

Axis2支持HTTP、SMTP、TCP和JMSSpring支持:Axis2内置了Spring服务支持。您可以编写SpringBean,然后方便地使用Axis2将其作为Web服务公开WS-Policy集成:Axis2完全支持WS-Policy,该规范已集成到了引擎的核心中第二十九页,共四十二页。第四节基于AXIS的Web服务开发第三十页,共四十二页。PublishingandConsumingWebServiceswithAxisTomcatAXIS*.jws?wsdlClientSideJavaClass*.jws*.jws?wsdlwsdlJava2WSDLwsdlAXISJavaClass*.javawsdlWSDL2Java第三十一页,共四十二页。InvokingaSOAPServicewithAxisTomcatAXISSOAPRequestSOAPRequestSOAPReplyXercesSOAPReplyAXISXercesClientSideWebServiceReplyRPCInvokeReplyServerSideWebService第三十二页,共四十二页。Axis服务器端部署的三种方式Java源程序直接发布*.jws通过编写wsdd文件部署。通过生成的Skelton类在服务器上部署第三十三页,共四十二页。Axis客户端调用Web服务的三种方式动态调用接口模型动态代理模型静态存根模型第三十四页,共四十二页。动态调用接口模型利用RPC中的Call类对象来实现对远程服务的调用和访问的一种模型,其核心在于Call对象的实现。对每个Web服务的每一个远程方法调用,DII模型都要生成一个新的Call对象,并可以根据该服务的WSDL文档描述对Call对象进行配置,最终利用Call对象实现该远程方法的调用。第三十五页,共四十二页。动态代理模型利用java反射(reflection)机制中Proxy类对象来实现对远程服务的调用和访问的一种模型,其核心在于与Proxy对象相关联的InvocationHandler的实现。对于每个不同的Web服务,客户端应用程序都需要在运行时访问服务的WSDL文档,生成一个服务的本地对象(Service),然后由该对象根据WSDL文档相应描述(PortName)取得接口的对应动态代理对象,利用生成的动态代理对象来访问远程接口的所有操作;第三十六页,共四十二页。动态代理模型动态代理的类结构

第三十七页,共四十二页。静态存根模型利用Stub类对象来实现对远程服务的调用和访问的一种模型,其核心在于Stub对象的实现。要实现远程服务的访问,客户端必须取得存根(stub),生成存根的一个实例对象,对该对象进行必要的配置及类型转换,最后利用配置好的静态存根对象实例调用远程操作取得Web服务结果;第三十八

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论