Java Web 服务,第 2 部分: 深度探索 Axis2:AXIOM
2009-11-05 00:00:00 来源:WEB开发网AXIOM 与其他文档模型有许多相似之处。它还具有一些与其按需构建的处理过程相关的显著特征,以及支持其用于 Web 服务的专门特性。
实际应用中的 AXIOM
从整体上看,AXIOM 的 API 可能最接近于 DOM,但是它又具有自己的特点。例如,访问方法以使用 java.util.Iterator 实例为基础对不同的部分(如通过 org.apache.axiom.om.OMContainer.getChildren() 以及相关方法所返回的部分)进行访问,而没有使用任何形式的列表。没有将不同的部分索引为列表,导航使用 org.apache.axiom.om.OMNode.getNextOMSibling() 和 org.apache.axiom.om.OMNode.getPreviousOMSibling() 方法,以便按顺序遍历文档树中同一个级别的节点(在这方面,它类似于 DOM)。这种访问和导航方法的结构与按需构建树的工作方式非常吻合,因为这意味着 AXIOM 可以允许您移动到开始元素的第一个子项,而无需首先处理所有的 子元素。
与 DOM 和 dom4j 一样,AXIOM 使用接口定义了用于访问和操作树表示的 API。AXIOM 分发版中包括这些接口的几种不同的专门实现。其中一种实现(在 org.apache.axiom.om.impl.dom 包中)是双重功能的,使用相同的实现类同时支持 AXIOM 和 DOM 接口。因为需要使用数据的 DOM 视图的 Web 服务外接程序的数目较多,所以这种实现可能很有价值。有关更一般的用法,org.apache.axiom.om.impl.llom 包提供了一种基于对象链表的实现(包名中的“ll”表示链表 (linked list))。还对基本的 org.apache.axiom.om 接口和 org.apache.axiom.soap 包树中的实现进行了扩展,后者专门用于处理 SOAP 消息。
为了简要地了解实际应用中的 AXIOM API,我们将对一些示例进行研究,这些示例来自于对 AXIOM 与其他的文档模型进行性能测试对比的代码。清单 3 中提供了第一个示例,这个示例基于为输入文档构建 AXIOM 表示的代码。与使用 DOM 和 dom4j 一样,在使用 AXIOM 进行任何工作之前,您需要获得一个构建模型组件对象的工厂。通过使用 org.apache.axiom.org.OMFactory 接口的 org.apache.axiom.om.impl.llom.factory.OMLinkedListImplFactory 实现,清单 3 中的代码选择了 AXIOM 接口的基本链表实现。这个工厂接口包括用于从各种来源直接构建文档的方法、用于创建 XML 文档表示的不同部分的方法。清单 3 使用了相应的方法从输入流构建文档。build() 方法返回的对象实际上是 org.apache.axiom.om.OMDocument 的实例,尽管在这段代码中没有指明。
更多精彩
赞助商链接