您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 08-Web服务实用技术(Web服务实现技术)
2008-2010byLiWeigang.Allrightsreserved.Web服务实用技术主讲:李伟刚liweigang@nwpu.edu.cn西北工业大学软件与微电子学院2008-2010byLiWeigang.Allrightsreserved.第八章Web服务实现技术2008-2010byLiWeigang.Allrightsreserved.主要内容Web服务开发方法Web服务运行环境AXIS基于AXIS的Web服务开发2008-2010byLiWeigang.Allrightsreserved.第一节Web服务开发方法2008-2010byLiWeigang.Allrightsreserved.TwoApproachesServerImplementationServiceInterfaceWSDLe.g.EJB/JavaClasstoWSDLe.g.WSDLcontractastheinterface&messagedescriptionServerInterfaceServiceImplementationWSDLBottomUpTopDown2008-2010byLiWeigang.Allrightsreserved.Web服务开发生命周期开发开发和测试Web服务实现、定义服务接口描述和定义服务实现描述。通过创建新的Web服务、把现有的应用程序变成Web服务由其它Web服务和应用程序组成新的Web服务提供Web服务的实现。部署向服务请求者或服务注册中心发布服务接口和服务实现的定义Web服务的可执行文件部署到执行环境运行调用Web服务Web服务完全部署、可操作并且服务提供者可以通过网络访问服务管理持续的管理和经营Web服务应用程序。安全性、可用性、性能、服务质量和业务流程2008-2010byLiWeigang.Allrightsreserved.构建WebService1.编写代码2.打包以便布署3.布署到应用服务器4.创建WSDL描述5.发布描述6.发现-通过UDDI7.绑定、调用2008-2010byLiWeigang.Allrightsreserved.2008-2010byLiWeigang.Allrightsreserved.访问WebService1.开发新应用2.查询UDDI3.定位Web服务、下载其描述4.根据描述创建Javaclientproxy5.在应用中编写调用Javaclientproxymethods代码6.测试应用7.Javaclientproxy通过SOAP调用Webservicemethods2008-2010byLiWeigang.Allrightsreserved.2008-2010byLiWeigang.Allrightsreserved.第二节Web服务运行环境2008-2010byLiWeigang.Allrightsreserved.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给用户,页面中包含有服务返回的结果2008-2010byLiWeigang.Allrightsreserved.2008-2010byLiWeigang.Allrightsreserved.第三节AXIS2008-2010byLiWeigang.Allrightsreserved.AxisIntroductionAxis是Apache组织推出的Web服务引擎Axis本质上就是一个Web服务引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。但Axis还包括:一个独立的WebService服务器。一个嵌入Servlet引擎(Tomcat)的服务器。支持WSDL。提供转化WSDL为Java类的工具。提供例子程序。提供TCP/IP数据包监视工具。2008-2010byLiWeigang.Allrightsreserved.Axis2体系结构AXIS对象模型(AXIsObjectModel,AXIOM)是ApacheAxis2的XML对象模型内核层包含引擎、模块和部署框架所有其他组件都在内核之上的层中各种传输协议(如HTTP和SMTP)和数据绑定(在XML和Java代码之间进行转换)并不在核心中,因为它们是可插入的,因此提供了很大的灵活性所有其他相关技术(如JavaAPIforXMLWebServices(JAX-WS))都在Axis2之上的层次中2008-2010byLiWeigang.Allrightsreserved.AXIOMAXIOM是一个XML对象模型,设计用于提高XML处理期间的内存使用率和性能,基于Pull解析通过使用StreamingAPIforXML(StAX)Pull解析器,AXIOM可以控制解析过程,以提供延迟构建支持StAX通过提供一种基于事件迭代器(Iterator)的API让程序员去控制xml文档解析过程程序遍历这个事件迭代器去处理每一个解析事件,解析事件可以看做是程序拉出来的,也就是程序促使解析器产生一个解析事件然后处理该事件,之后又促使解析器产生下一个解析事件,如此循环直到碰到文档结束符SAX也是基于事件处理xml文档,但却是用推模式解析,解析器解析完整个xml文档后,才产生解析事件,然后推给程序去处理这些事件DOM采用的方式是将整个xml文档映射到一颗内存树,这样就可以很容易地得到父节点和子结点以及兄弟节点的数据,但如果文档很大,将会严重影响性能延迟构建是指AXIOM不完全构建XML对象模型,而是基于用户的需求构建2008-2010byLiWeigang.Allrightsreserved.AXIOM(续)例子:从XML输入流中获得第一个人的Location元素值XML文档PersonsPersonNameDihiniHimahansi/NameSexFemale/SexLocationColombo,SriLanka/Location---Objectmodelisbeingbuiltonlyuptothispoint/PersonPersonNameThushariDamayanthi/NameSexFemale/SexLocationElpitiya,SriLanka/Location/Person/Persons2008-2010byLiWeigang.Allrightsreserved.AXIOM(续)优势尽可能仅使用能满足用户的需求的内存如果用户希望访问较大的文档中前面的数个字节或数千字节,则延迟构建功能将改善该应用程序的内存需求情况可以从任何元素获得StAX事件,而不管是否完整构建了对象模型应用案例:•当Axis2作为中介传递时,如果需要仅读取SOAP消息的Header,AXIOM将防止其读取整个SOAP消息,使其具有很高的内存效率•当Web服务实现能够直接使用StAX事件时,由于采用了AXIOM,Web服务所需的内存非常小2008-2010byLiWeigang.Allrightsreserved.AXIOM(续)AXIOM内置了消息传输优化机制(MessageTransferOptimizationMechanism,MTOM)支持对于AXIOM体系结构,可以通过实现AXIOM接口并将其插入到Axis2中来执行自己的对象模型AXIOM提供了构建于基础AXIOMAPI之上的SOAP接口可以使用envelope.getHeaders和envelope.getBody之类的便利方法查看SOAP2008-2010byLiWeigang.Allrightsreserved.可扩展消息传递引擎Axis2是一个纯SOAP处理器,并不依赖于任何Java特定的规范引擎通过传输协议接收到消息后,将调用之前注册的一系列拦截器(称为处理程序)处理程序通常处理SOAPHeader内的信息,也可以同时对消息的其他部分进行处理随后会将消息传递给消息接收者——一般将此消息传递给服务实现类进行处理2008-2010byLiWeigang.Allrightsreserved.可扩展消息传递引擎(续)Axis2的管道模型Axis2引擎的传入消息会通过“In”管道。所有传出消息都会通过“Out”管道通过组合使用不同数量的In和Out管道,Axis2可以处理任何MEP(MessageExchangePattern)阶段每个Axis2管道内部被逻辑划分为名为阶段(Phase)的区域按特定的方式对这些阶段进行命名,以表示在该阶段对消息的处理方式这些阶段都会有用处,特别是尝试部署新处理程序时,因为我们可以指定处理程序需要在哪个阶段中执行2008-2010byLiWeigang.Allrightsreserved.可扩展消息传递引擎(续)上下文层次结构Axis2环境需要在不同的级别保存信息例如,整个引擎公用的信息应该在系统级别进行维护,而消息级别的信息应该保存在消息级别。有些信息是动态的,而有些信息是静态的为了处理这些不同的需求,Axis2提供了上下文层次结构来在不同级别维护信息2008-2010byLiWeigang.Allrightsreserved.可扩展消息传递引擎(续)调度传入Axis2引擎的每条消息都以特定服务和操作为目标。标识此服务/操作组合的过程称为调度,Axis2引擎提供了进行此工作的四种基本方法:基于请求URI进行调度传输信息:可以将SOAPActionHTTPHeader用于确定服务和操作WS-AddressingHeader:如果传入消息包含WS-AddressingHeader,也可以将其用于进行调度如果SOAP主体的第一个子项的QName是使用RPC规则定义的,则也可以使用此名称2008-2010byLiWeigang.Allrightsreserved.可插入模块体系结构模块为服务器提供了一个扩展机制Axis2中的每个模块都包含一组相关的处理程序2008-2010byLiWeigang.Allrightsreserved.可插入模块体系结构(续)模块的类型Sandesha2模块:提供WS-ReliableMessaging支持WS-Addressing模块:为Axis2提供WS-Addressing支持Rampart和Rahas模块:提供WS-SX(安全相关规范)支持Kandula模块:提供WS-AT支持Savan模块:提供WS-Eventing支持2008-2010byLiWeigang.Allrightsreserved.可插入模块体系结构(续)模块的级别系统级别:模块将影响整个系统,此模块中的处理程序将应用于传入系统的所有消服务级别:此模块中的处理程序将应用于以特定服务为目标的消息。这些处理程序应该始终部署在调度阶段后操作级别:此模块中的处理程序将应用于以特定操作为目标的消息。这些处理程序应该始终部署在调度阶段后2008-2010byLiWeigang.Allrightsreserved.改进的部署模型Axis2现在支持将服务热部署到Axis2引擎中——热部署服务应该存档为ZIP文件,且在文件名中使用.aar(Axis2存档,
本文标题:08-Web服务实用技术(Web服务实现技术)
链接地址:https://www.777doc.com/doc-1576904 .html