日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Axis2学习笔记 (Axiom 篇 )

發布時間:2024/1/18 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 篇 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。