您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > Web 服务与 Axis2 体系结构
Web服务与Axis2体系结构级别:中级EranChinthaka(chinthaka@apache.org),高级软件工程师,LankaSoftwareFoundation2007年2月26日讨论ApacheAxis2的各个组成部分,并了解其为何凭借模块化和可扩展特性正逐渐成为下一代Web服务平台。引言引言引言引言2006年5月推出ApacheAxis21.0是一个大的里程碑。Axis21.1于2006年11月推出,提供了大量新功能(其中大部分都是其用户最初提出的)以及大量错误修补程序(使其更加稳定)。:从最初的ApacheAxis和ApacheSOAP到目前的Axis2,经历了很大的发展。它不仅更高效、模块化、基于XML,而且具有灵活性和可扩展性,实现了安全性和可靠性等企业功能。ApacheAxis2的易用性和功能确实使其成为了下一代Web服务平台。在本文中,您将了解目前已实现了哪些功能。您将看到一个支持新一代可互操作标准(如WS-Security、WS-ReliableMessaging和WS-Addressing)的成熟产品。Axis2体系结构:组件视图体系结构:组件视图体系结构:组件视图体系结构:组件视图图图图图1.组件视图组件视图组件视图组件视图AXIS对象模型(AXIsObjectModel,AXIOM)是ApacheAxis2的XML对象模型。Axiom之上的内核层包含引擎、模块和部署框架。在Axis2的核心部分没有特定于Java™的概念。所有其他组件都在内核之上的层中。各种传输协议(如HTTP和SMTP)和数据绑定(在XML和Java代码之间进行转换)并不在核心中,因为它们是可插入的,因此提供了很大的灵活性。所有其他相关技术(如JavaAPIforXMLWebServices(JAX-WS))都在Axis2之上的层次中。我们现在将分析Axis2的以下组件:AXIOM(新XML信息集表示形式)可扩展消息传递引擎可插入模块体系结构经改进的部署模型新客户机API可插入数据绑定代表性状态传输(RepresentationalStateTransfer,REST)支持AXIOMAXIs对象模型(AXIOM)是一个XML对象模型,设计用于提高XML处理期间的内存使用率和性能,基于Pull解析。通过使用StreamingAPIforXML(StAX)Pull解析器,AXIOM(也称为OM)可以控制解析过程,以提供延迟构建支持。延迟构建是指AXIOM不完全构建对象模型,模型的其余部分基于用户的需求构建。以下示例对此概念进行了说明:假定某个用户需要从XML输入流中获得第一个人的Location元素值,AXIOM构建的对象模型将一直包含到Location元素结束的内容,而让其他内容保留在流中:清单清单清单清单1.对象模型的对象模型的对象模型的对象模型的AXIOM部分构建部分构建部分构建部分构建PersonsPersonWeb服务与Axis2体系结构第1页共6页2010-9-2917:17消息交换模式(消息交换模式(消息交换模式(消息交换模式(MessageExchangePattern,,,,MEP))))让我们看一下客户机和服务器之间的NameDihiniHimahansi/NameSexFemale/SexLocationColombo,SriLanka/Location---Objectmodelisbeingbuiltonlyuptothispoint/PersonPersonNameThushariDamayanthi/NameSexFemale/SexLocationElpitiya,SriLanka/Location/Person/Persons这里的优势在于,尽可能仅使用能满足用户的需求的内存。如果用户希望访问较大的文档中前面的数个字节或数千字节,则延迟构建功能将改善该应用程序的内存需求情况。可以从任何元素获得StAX事件,而不管是否完整构建了对象模型。在有些情况下,Axis2中的此功能非常有用。例如,当Axis2作为中介传递时,如果需要仅读取SOAP消息的Header,AXIOM将防止其读取整个SOAP消息,使其具有很高的内存效率。另一个例子是,当Web服务实现能够直接使用StAX事件时,由于采用了AXIOM,Web服务所需的内存非常小。此外,AXIOM内置了消息传输优化机制(MessageTransferOptimizationMechanism,MTOM)支持。对于AXIOM体系结构,可以通过实现AXIOM接口并将其插入到Axis2中来执行自己的对象模型。由于AXIOM最初是作为Axis2的对象模型而开发的,因此AXIOM提供了构建于基础AXIOMAPI之上的SOAP接口。这允许您使用envelope.getHeaders和envelope.getBody之类的便利方法查看SOAP。与其他广泛使用的对象模型相比,AXIOM已被证明更快速高效。有关对AXIOM进行的一些性能测试的信息,请参见参考资料。可扩展消息传递引擎可扩展消息传递引擎可扩展消息传递引擎可扩展消息传递引擎正如前面提到的,Axis2是一个纯SOAP处理器,并不依赖于任何Java特定的规范。例如,JAX-WS将作为Axis2上的一个层实现,而不会进入核心部分中。图图图图2.可扩展消息传递引擎可扩展消息传递引擎可扩展消息传递引擎可扩展消息传递引擎引擎通过传输协议接收到消息后,将调用之前注册的一系列拦截器(称为处理程序)。处理程序通常处理SOAPHeader内的信息,不过并不限制同时对消息的其他部分进行处理。随后会将消息传递给消息接收者——消息的最终接收方。消息接收者同时也负责对消息进行相应的处理,大部分时候都会将此消息传递给服务实现类进行处理。Axis2的管道模型的管道模型的管道模型的管道模型可以使用一组关系对Axis2的核心消息处理部分进行建模。Axis2引擎的传入消息会通过“In”管道。所有传出消息都会通过“Out”管道。图图图图3.Axis2的管道模型的管道模型的管道模型的管道模型通过组合使用不同数量的In和Out管道,Axis2可以处理任何MEP。例如,可以使用一个In管道和一个Out管道来支持进行In-out交互。可以使用一个In管道来支持In-Only交互。这些管道之间的连接由消息接受者进行。Web服务与Axis2体系结构第2页共6页2010-9-2917:17消息交换。如果客户机需要从服务器获得股票报价,则将向服务器发送请求消息,服务器将随后向客户机发送一条响应消息。从服务器的角度而言,它将接收一个“In”消息,发送一个“Out”消息。这是用于请求-响应方案的模式,名为In-OutMEP。与此类似,客户机可以向服务器发送In-Only消息来发出请求,例如订阅邮件列表。有关消息交换模式的更多信息,请参见W3C网站。Axis2可以处理Web服务描述语言(WebServicesDescriptionLanguage,WSDL)2.0规范中定义的大部分MEP,且可以扩展为支持任何自定义MEP。阶段阶段阶段阶段每个Axis2管道内部被逻辑划分为名为阶段(Phase)的区域。(阶段是管道中的处理程序逻辑集。)将按特定的方式对这些阶段进行命名,以表示在该阶段对消息的处理方式。例如,管道中的第一个阶段是TransportIn阶段,所有进行传输信息处理的处理程序都可能位于此处。Dispatch阶段中的处理程序将标识此消息的目标服务和操作。这些阶段都会有用处,特别是尝试部署新处理程序时,因为我们可以指定处理程序需要在哪个阶段中执行。上下文层次结构上下文层次结构上下文层次结构上下文层次结构Axis2环境需要在不同的级别保存信息。例如,整个引擎公用的信息应该在系统级别进行维护,而消息级别的信息应该保存在消息级别。有些信息是动态的,而有些信息是静态的。为了处理这些不同的需求,Axis2提供了上下文层次结构来在不同级别维护信息。图图图图4.上下文层次结构上下文层次结构上下文层次结构上下文层次结构层次结构的左侧包含所有动态信息,而右侧则包含静态信息(大部分都是从文件中读取的)。MessageContext包含与所处理的消息相关的信息,而OperationContext包含此消息所属的特定MEP相关的信息。ConfigurationContext包含系统级的动态信息,而AxisConfiguration包含系统级的静态信息(大部分都是从axis2.xml读取的)。调度调度调度调度传入Axis2引擎的每条消息都以特定服务和操作为目标。标识此服务/操作组合的过程称为调度,Axis2引擎提供了进行此工作的四种基本方法:基于请求基于请求基于请求基于请求URI进行调度:进行调度:进行调度:进行调度:有时候可以通过查看请求URI确定消息的目标服务。例如,通过请求URI“”可以确定,该消息的目的地是StockQuoteService的getQuote操作。1.传输信息:传输信息:传输信息:传输信息:可以将SOAPActionHTTPHeader用于确定服务和操作。2.WS-AddressingHeader::::如果传入消息包含WS-AddressingHeader,也可以将其用于进行调度。3.Web服务与Axis2体系结构第3页共6页2010-9-2917:17如果SOAP主体的第一个子项的QName是使用RPC规则定义的,则也可以使用此名称。4.这些是Axis2引擎的一些基本功能。我们现在将了解模块如何为Axis2提供扩展机制。可插入模块体系结构可插入模块体系结构可插入模块体系结构可插入模块体系结构模块为服务器提供了一个扩展机制。Axis2中的每个模块都包含一组相关的处理程序。例如,WS-Addressing模块将包含一组为Axis2引擎提供WS-Addressing支持的处理程序。Axis2管理员可以下载WS-Addressing模块,并将其部署到Axis2引擎中,从而为Axis2引擎添加WS-Addressing支持。module.xml文件包含指定处理程序应属于哪个管道和阶段的规则。图图图图5.可插入模块体系结构可插入模块体系结构可插入模块体系结构可插入模块体系结构模块非常有用,因为在需要支持某个WS-*规范的情况下,可以下载并部署相应的模块,而不必担心处理程序应该归入何处。模块的扩展名为.mar,指示其为模块存档(modulearchive)。以下是支持已经构建的WS-*规范的几个模块:Sandesha2模块:模块:模块:模块:提供WS-ReliableMessaging支持WS-Addressing模块:模块:模块:模块:为Axis2提供WS-Addressing支持Rampart和和和和Rahas模块:模块:模块:模块:提供WS-SX(安全相关规范)支持Kandula模块:模块:模块:模块:提供WS-AT支持Savan模块:模块:模块:模块:提供WS-Eventing支持模块可用性和参与模块可用性和参与模块可用性和参与模块可用性和参与模块部署到Axis2引擎中后,它就“可用”,并能够参与到系统中。模块的参与可以在以下级别进行,具体取决于特定要求:系统级别:系统级别:系统级别:系统级别:模块将影响整个系统,此模块中的处理程序将应用于传入系统的所有消息。服务级别:服务级别:服务级别:服务级别:此模块中的处理程序将应用于以
本文标题:Web 服务与 Axis2 体系结构
链接地址:https://www.777doc.com/doc-1580700 .html