Axis2学习笔记 (Axiom 篇 )
1.Abstract |
|||
Axis2 是继 Axis1 之后 Apache 软件组织推出的下一代 Webservice 的实现品 , 和 1.0 比较有如下较大的改进 : |
|||
1.不是在 Axis1 的基础上扩展,而是重新开发,重新实现。 |
|||
2.支持 SOAP1.1 和 SOAP1.2. 及 REST 风格。 |
|||
3.新的 XML 处理对象模型 Axiom, 更快更有效率。 |
|||
4.客户端支持同步、异步、单通道、双通道。 |
|||
5.支持 HTTP SMTP JMS TCP 多种协议。 |
|||
6.支持可插拔模块功能以强对数据的处理。 |
|||
2.Axiom |
|||
SOAP 协议是基于 xml 做为数据交换的格式,所以 了解 axis2 工作原理 前 我们得了解一下AXIOM , Axis2 的映射 xml 数据的对象模型,其主要类图如下 : | |||
![]() |
|||
< 图一 >
|
|||
Axiom 采用最新拉式 (pull)xml 处理方式 :StAX ,拉式处理是最近 xml 解析方法的趁势,相较以前推式 (push) 处理如 dom 和 sax ,拉式将 xml 解析的控制权交给了客户端程序 , 只有当客户端程序需要数据时解析类才会真正从数据流中读取数据,所以这种方式当解析稍大一点 xml 数据时更加有效率。 |
|||
如图一 , 从最高抽象级别 Axiom 共分三大块 : OMXMLParserWrapper,OMFactory, OMNode 和 OMContainer, OMXMLParserWrapper 主要用来包装拉式 xml 数据流 , 这一点类似装饰模式,对处理数据功能进一步加强 ,OMFactory 是 OMNode 和 OMContainer 的工厂类,用于产生其实现类的对象 , OMXMLParserWrapper 的实现类具有 OMFactory 的实例引用 , 可以说 OMXMLParserWrapper 像装配车间 , 将原料 ( 从拉式 xml 数据流获取数据 ) 用机器 (OMFactory) 生产成产品 (OMNode 或 OMContainer 的实现类 ), 最后 OMNode 和 OMContainer 不用说就是映射 xml 文档数据中节点的对象了 , OMNode 代表 xml 文档树最末端的节点, OMContainer 可以包含其它节点的节点,比如图中的 OMElement 扩展了这两个接口 , 这样它既可以有父接点,也可以有子节点。 |
|||
通过 Axiom 一个典型的 xml 文档解析过程如下 : |
|||
![]() |
|||
< 图二 >
|
|||
如图二展示了一个客户端程序获取一个 xml 文档的根节点的过程 , 其中 StAXOMBuilder 是 OMXMLParserWrapper 的实现类 , OMLinkedListImplFactory 是 OMFactory 的实现类 , OMDocumentImpl 是 OMDocument(OMDocument 扩展了 OMContainer) 实现类,我们可以先看一下一段典型的实现代码,有助于理解 : |
|||
1. BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(“MyFilePath”))); 2.XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(reader); 3. StAXOMBuilder builder = new StAXOMBuilder(OMAbstractFactory.getOMFactory(),parser); 4. OMElement root = builder.getDocumentElement(); |
|||
第一步 : 产生一个原始的 xml 数据流 |
|||
第二步 : 产生拉式 (pull)xml 数据流 |
|||
第三步 : 产生 StAXOMBuilder 对象 |
|||
第四步:获取根节点对象 , 获取这个节点的过程如图调用了 StAXOMBuilder 的 next() 方法 , 这个 next() 方法首先调用了 XMLStreamReader 的 next() 方法 ( 真正从数据流中取出数据 ) ,然后调用 OMLinkedListImplFactory 的 createOMElement 方法产生一个 OMElementImpl 对象 , 这个对象构造过程中又调用最初实例化 StAXOMBuilder 对象时产生的 OMDocumentImpl 对象的 addChild() 方法将本身赋给 OMDocumentImpl 对象的一个 documentElement 属性,等于最终返回的值就是这个对象 , 从这里面我们可以看出, OMDocument 及其实现类 OMDocumentImpl 并不直接提供给外界使用 ,最终返回给客户端的是另外一个 OMElementImpl 对象 , 还有在这里我们可以体会到 , 数据真正需要时才会从数据流取出。 |
转载于:https://www.cnblogs.com/chinacloud/archive/2010/10/28/1863130.html
Axis2学习笔记 (Axiom 篇 )相关推荐
- [mmu/cache]-ARM MMU的学习笔记-一篇就够了
★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位 . 相关文章 1.ARM cache的学习笔记-一 ...
- [mmu/cache]-ARM cache的学习笔记-一篇就够了
★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位 . 相关文章 1.ARM MMU的学习笔记-一篇就 ...
- Vue学习笔记进阶篇——Render函数
本文为转载,原文:Vue学习笔记进阶篇--Render函数 基础 Vue 推荐在绝大多数情况下使用 template 来创建你的 HTML.然而在一些场景中,你真的需要 JavaScript 的完全编 ...
- PHP学习笔记 - 进阶篇(7)
PHP学习笔记 - 进阶篇(7) 文件操作 读取文件内容 PHP具有丰富的文件操作函数,最简单的读取文件的函数为file_get_contents,可以将整个文件全部读取到一个字符串中. $conte ...
- Vue学习笔记入门篇——数据及DOM
本文为转载,原文:Vue学习笔记入门篇--数据及DOM 数据 data 类型 Object | Function 详细 Vue 实例的数据对象.Vue 将会递归将 data 的属性转换为 getter ...
- WPF学习笔记(数据绑定篇3)
接上回的<WPF学习笔记(数据绑定篇2)>,继续 BindValidation 此示例演示了: 如何使用错误模板: 使用样式显示错误信息: 如何在校验发生异常时执行回调: 首先,你可以看见 ...
- Vue学习笔记进阶篇——多元素及多组件过渡
本文为转载,原文:Vue学习笔记进阶篇--多元素及多组件过渡 多元素的过渡 对于原生标签可以使用 v-if/v-else.但是有一点需要注意: 当有相同标签名的元素切换时,需要通过 key 特性设置唯 ...
- PhalAPI学习笔记拓展篇 ———ADM模式中NotORM实现简单CURD
PhalAPI学习笔记拓展篇 ---ADM模式中NotORM实现简单CURD 前言 内容 ADM模式 ADM简单介绍 准备工作 PhalAPI提供的CURD操作方法 业务实现 结束语 前言 公司业务需 ...
- 极客HTTP协议学习笔记破冰篇(1-7)
极客HTTP协议学习笔记破冰篇(1-7) 前言 各篇章笔记链接 一.学习笔记 1.HTTP的前世今生 2.HTTP是什么 3.与HTTP相关的各种概念(上) 4.与HTTP相关的各种概念(下) 5.常 ...
最新文章
- 运算放大器在超高频信号作用下的偏移量的变化
- C++11 类型后置语法
- 【转载】使用Nexus搭建Maven服务器详细配置
- Tomcat部署时没有项目
- 第三次学JAVA再学不好就吃翔(part4)--基础语法之变量
- sersync+rsync实现实时同步
- 关于std:auto_ptr
- 暂停 CSS @keyframes 动画
- 数学建模案例【人口模型 】(马尔萨斯人口模型,Logistic模型)
- JS通过WebSocket实现双屏信息同步显示
- Windows Azure Virtual Network (12) 虚拟网络之间点对点连接VNet Peering
- 数学基础 —— 旋转(2D 正旋转)
- 血淋淋的BUG:波音在软件开发上错在哪里?
- slam十四讲,ch5joinmap报错,已解决
- win10正式版新功能介绍
- PHP输出中文乱码的解决方法(适合初学者)
- 弱口令审计-工具用法大全
- C-Free5.0注册码
- linux连接mssql数据库,在Centos7下为PHP安装mssql扩展
- 【前端库】favico.js 浏览器消息提示 【待更新】
热门文章
- android button 图片 大小设置,android 中怎么控制ImageButton 上的图片与按钮大小的匹配...
- github + jsdeliver + picgo 搭建免费cdn
- ES6构造函数class语法与ES5构造函数语法
- 学习偏态分布的相关知识和原理的4篇论文推荐
- 机器学习中级课程 3.分类变量
- 22-05-10 西安 mysql基础篇(02) 修改表 、修改列、commit和rollback、表数据之增删改 DML 、列级约束、表级约束
- HTTP应知应会知识点复习手册(上)
- CSS3---选择器分类,最全版
- 水质评价---2综合水质标识指数法
- [Python与图像处理]利用Python与Kmeans聚类分析图像主色彩