快速业务通道

Java Web服务,第2部分: 深度探索Axis2:AXIOM - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
utput document summary information     */    protected void walk(Object doc, DocumentSummary summary) {      summary.addElements(1);      walkElement(((OMDocument)doc).getOMDocumentElement(), summary);    }

Java Web服务,第2部分: 深度探索Axis2:AXIOM(4)

时间:2011-02-02 IBM Dennis Sosnoski

最后,清单 5 给出了用于将该文档表示转换为输出流的代码。作为 OMNode 接口的一部分,AXIOM 定义了许多输出方法,包括针对各种不同的目标(如输出流、普通字符写入程序、或 StAX 流写入程序),带和不带格式信息,带和不带在写入之后访问文档表示的功能(如果尚未构建,这需要构建完整的表示)。通过从元素中获得 StAX 解析器,OMElement 接口定义了另一种访问文档信息的方法。这种使用解析器从文档表示中提取 XML 的能力提供了很好的对称性,当按需构建 AXIOM 表示时,这种方式非常合适(因为可以直接返回用于构建该表示的解析器)。

清单 5. 从 AXIOM 写入文档

/**     * Output a document as XML text.     *     * @param doc document representation to be output     * @param out XML document output stream     */    protected void output(Object doc, OutputStream out) {      try {        ((OMDocument)doc).serializeAndConsume(out);      } catch (Exception ex) {        ex.printStackTrace(System.err);        System.exit(0);      }    }

AXIOM 为修改现有的文档部分提供了一些基本的方法(如 OMElement.setText() 可用于将元素的内容设置为一个文本值)。如果您正从头开始写入文档,那么需要直接创建组件的新实例。因为 AXIOM API 是基于接口的,所以它使用各种工厂来创建不同部分的具体实现。

有关 AXIOM API 的更详细信息,请参见参考资料部分提供的 AXIOM 教程和 JavaDoc 链接。

AXIOM 中的 MTOM

AXIOM 的最有趣的特性之一是,它对 SOAP 附件最新版本中所使用的 W3C XOP 和 MTOM 标准提供了内置的支持。这两种标准协同工作,其中 XOP(XML 二进制优化打包,XML-binary Optimized Packaging)提供了一种方式,使得 XML 文档在逻辑上可以包含任意二进制数据的大对象,而 MTOM(SOAP 消息传输优化机制,SOAP Message Transmission Optimization Mechanism)则将 XOP 技术应用于 SOAP 消息。XOP 和 MTOM 都是新一代 Web 服务框架的关键特性,因为它们最终提供了可互操作的附件支持以及解决本领域中当前问题的能力。

XOP 使用 Base64 编码的字符数据内容。通过对原始数据中的每六位使用一个 ASCII 字符来表示,Base64 编码可以将任意的数据值转换为可打印的 ASCII 字符。因为二进制数据通常不能嵌入到 XML 中(XML 只能处理字符,不能处理原始的字节,甚至有一些字符编码也不允许出现在 XML 中),Base64 编码非常适合于在 XML 消息中嵌入二进制数据。

XOP 使用 XOP 命名空间中特殊的“Include”元素来替换 Base64 文本。Include 元素给出了标识单独实体(在该 XML 文档之外)的 URI,该实体是希望包括在 XML 文档中的实际数据。通常,这个 URI 将在与 XML 文档相同的传输中标识一个单独的块(尽管可以不这样做,但这样提供的潜在优势可通过中间层或存储文档来交换文档)。使用对原始数据的引用来替换 Base64 文本,可以在一定程度上减小文档大小(对于普通字符编码,最多可以减少百分之二十五的大小),并实现更快的处理速度,而无需承担对 Base64 数据进行编码和解码所带来的开销。

MTOM 构建于 XOP 之上,首先定义了一个抽象的模型,表示如何将 X

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号