网站首页 新闻首页 网页设计图形动画软件编程网站开发办公软件操作系统数据库网络技术认证考试范文资料黑客攻防 书籍教程 进入论坛

使用 Axis2 进行 SOA 开发,第 1 部分: 了解 Axis2 基础

http://www.diybl.com/ 2008-1-31  网络 点击:  [ 评论 ]
文章搜索:    【点击打包该文章】

 

引言

Web 服务的历史非常悠久,在其发展期间经历了多次迭代。第一代 Web 服务是受到高度控制的交互,可以视为仅是对可行性的测试。Apache SOAP 是第一代中值得注意的 SOAP 引擎之一,主要用作“概念验证”,而根本没有考虑性能。第一代 SOAP 引擎的整个目的是为了让人们认识到 Web 服务是一个理想的选项。

不久,第一代 SOAP 引擎获得了回报。越来越多的公司开始对此产生兴趣,SOA 的概念逐渐成形。可以将此阶段称为第二代 Web 服务,它要求更好更快的 SOAP 引擎。发现和定义等方面已经得到标准化,并需要 SOAP 引擎来支持这些标准。Axis 是这些第二代 SOAP 引擎之一。

现在,第二代 Web 服务的时代已经接近尾声。Web 服务现在的要求非常高,Web 服务领域的参与者也非常多。用于控制 Web 服务交互的不同方面的涉及内容已得到标准化。第三代 Web 服务要求使用更快、更可靠的 SOAP 引擎——现有的 Axis 已不足以满足此要求。Axis2 应运而生,填补了这一空白。

Axis2 体系结构

Axis2 具有模块化体系结构,由核心模块和非核心模块组成。据说,Axis2 核心是纯 SOAP 处理引擎,并没有包含 Java™ API for XML-based RPC (JAX-RPC) 概念作为其核心的一部分。同时,Axis2 体系结构的设计充分考虑了以下原则:

  • 逻辑和状态分离,以提供无状态处理机制,因为 Web 服务是无状态的。
  • 所有信息位于一个信息模型中,允许对系统进行挂起和恢复。
  • 能够在不更改核心体系结构的情况下扩展功能,能以最小或没有核心更改的情况下直接支持新 Web 服务规范。

Axis2 核心体系结构包括以下核心和非核心组件:

  • 核心组件
    • XML 对象模型 (AXIOM)
    • SOAP 处理模型:处理程序框架
    • 信息处理模型:上下文和描述
  • 其他组件
    • 部署模型
    • 传输
    • 客户机 API
    • 核心生成模型

您可以在图 1 中看到这些组件。


图 1. Axis2 体系结构关系图
Axis2 体系结构关系图

Axis2 主要特性

Axis2 不仅是 Apache 的新 Web 服务框架。它还体现了从 Axis 1.x 系列获得的经验和最近两年在 Web 服务领域的发展。推出 Axis2 的主要原因之一是从速度和内存方面获得更好的性能——不过还添加了一些新特性和功能。大部分新特性都是为了提高 Axis2 的易用性,并同时保留通过各种方式扩展功能的空间。大部分新功能所添加到的主要领域如下所示:

  1. 新 XML 对象模型 (AXIOM)
  2. 基于消息传递的核心
  3. 经过改进的部署模型
  4. 可插入数据绑定
  5. 新客户机 API
  6. 信息处理模型

新 XML 对象模型:AXIOM

正如上面提到的,与 Axis 1.x 相比,Axis2 构建于全新的体系结构之上。引入 Axis2 的主要原因之一是获得合适的 XML 处理模型。Axis 1.x 使用 DOM 作为其 XML 表示机制,但使用 DOM 的缺点是,需要在内存中保存完整的对象层次结构(与传入消息对应)。对于小消息,这将不是问题,但对于大型消息就是问题了。为了克服此问题,Axis2 引入了新的 XML 表示形式作为其基础。

Axis2 对象模型(AXIs2 Object Model,AXIOM)是 Axis2 的基础,任何 SOAP 消息在 Axis2 中都表示为 AXIOM。AXIOM 相对于其他 XML 表示形式的优势在于,它基于 pull 解析器技术,而其他大多数则基于 push 解析器技术。pull 与 push 的主要不同之处在于,在 pull 技术中,调用者对解析器具有完全控制权,可以要求下一个事件;而对于 push,当要求解析器继续处理时,它将触发事件,直到达到文档最后为止。

由于 AXIOM 基于 pull 解析器技术,因此具有“随需应变构建”功能,仅在被要求时才会构建对象模型,而且,如果需要,可以直接从 AXIOM 访问基础 PULL 解析器并对其加以使用,而不用构建对象模型(Object Model,OM)。

基于消息传递的核心

Axis2 核心是纯 SOAP 处理引擎,并不了解数据绑定、传输、WSDl 等内容。Axis2 核心的主要功能是处理传输消息,并将其交付给目标应用程序。与 Axis 1.x 一样,Axis2 也具有用于扩展其主要功能的处理程序概念。

阶段和阶段规则
阶段是一个或多个处理程序的逻辑集合,有时候阶段本身也充当处理程序。Axis2 引入了阶段概念,以方便地对核心功能进行扩展。在 Axis 1.x 中,如果您希望向处理程序链添加处理程序,需要更改全局配置文件,但对于 Axis2,您并不需要进行此工作,因为阶段和阶段规则可解决此问题。阶段规则用于指定如何在阶段内对给定处理程序集进行排序。图 2 说明了阶段如何组成流。

Axis 1.x 并没有异步 Web 服务调用的概念,它完全绑定到请求-响应调用,但在 Axis2 中却是另一番景象。Axis2 体系结构能够支持在客户端和服务器端同时支持异步调用。同时,Axis2 也支持请求-响应样式的调用,但这会以两个异步调用的方式进行。在 Axis2 中,进入系统的消息可能有也可能没有响应,应该注意,Aixs2 支持 WSDL 2.0 中定义的所有八种消息交换模式(Message Exchange Patterns,MEP)。

Axis2 具有流的概念,流是阶段的集合,而阶段是处理程序的集合。根据给定方法调用的 MEP,与其关联的流的数量可能会有所变化。如果仅传入的 MEP 对应方法只具有一个流,则称为 inflow;而对于传入-传出,则具有两个流——inflow 和 outflow。在大多数情况下,inflow 从传输侦听器开始,到消息接收方处结束,而 outflow 能以不同的方式开始,大多数情况下都在传输发送方处结束。

消息接收方
如果消息在没有出现问题的情况下通过执行链,则引擎会将消息转交给消息接收方来进行业务逻辑调用,此后,将由消息接收方调用服务并在必要的情况下发送响应。图 3 说明了消息接收方如何适合执行链。

图 2. 流中的阶段
流中的阶段

图 3. Inflow 和消息接收方
Inflow 和消息接收方

新部署模型

Axis 之前的版本没有处理好 Web 服务部署中涉及的用户友好因素,因此开发了 Axis 1.x,其主要目的是为了进行 Web 服务概念证明。因此,在 Axis 1.x 中,用户必须手动调用管理客户机,并更新服务器类路径,然后重新启动服务器,以应用更改。这个有点麻烦的部署模型对新手肯定是一道障碍。Axis2 经过了精心的设计,能够克服此缺点,并提供灵活、用户友好、可方便进行配置的部署模型。

Axis2 部署引入了类似于 Java™ 2 Platform Enterprise Edition (J2EE) 部署机制的概念,开发人员可以在其中将所有类文件、库文件、资源文件和配置文件一起打包为存档文件,并将其放置在文件系统中的指定位置。

热部署热更新 的概念并不是新技术术语(对于熟悉 Web 服务平台的人更是如此),

欢迎光临DIY部落,点击这里查看更多文章教程   【点击打包该文章】
[1] [2]
如果图片或页面不能正常显示请点击这里 站内搜索:   

文章评论

请您留言

 

最新新闻