Axis2學習筆記一 Axiom 篇

2021-04-08 23:08:10 字數 1619 閱讀 4838

axis2學習筆記一 (axiom 篇 )

一. 簡介

axis2 是繼 axis1 之後 apache 軟體組織推出的下一代 webservice 的實現品 , 和 1.0 比較有如下較大的改進 :

1.不是在 axis1 的基礎上擴充套件,而是重新開發,重新實現。

2.支援 soap1.1 和 soap1.2. 及 rest 風格。

3.新的 xml 處理物件模型 axiom, 更快更有效率。

4.客戶端支援同步、非同步、單通道、雙通道。

5.支援 http **tp jms tcp 多種協議。

6.支援可插拔模組功能以強對資料的處理。

二 . axiom

soap 協議是基於 xml 做為資料交換的格式,所以 了解 axis2 工作原理 前 我們得了解一下axiom , axis2 的對映 xml 資料的物件模型,其主要類圖如下 :

< 圖一 >

axiom 採用最新拉式 (pull)xml 處理方式 :stax ,拉式處理是最近 xml 解析方法的趁勢,相較以前推式 (push) 處理如 dom 和 sax ,拉式將 xml 解析的控制權交給了客戶端程式 , 只有當客戶端程式需要資料時解析類才會真正從資料流中讀取資料,所以這種方式當解析稍大一點 xml 資料時更加有效率。

通過 axiom 乙個典型的 xml 文件解析過程如下 :

< 圖二 >

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 物件 , 還有在這裡我們可以體會到 , 資料真正需要時才會從資料流取出。

Axis2學習筆記一 Axiom 篇

一 簡介 axis2 是繼 axis1 之後 apache 軟體組織推出的下一代 webservice 的實現品 和 1.0 比較有如下較大的改進 1.不是在 axis1 的基礎上擴充套件,而是重新開發,重新實現。2.支援 soap1.1 和 soap1.2.及 rest 風格。3.新的 xml 處...

Axiom簡述 Axis2 的XML處理器

axiom簡述 axis2 的xml處理器 axis2用axiom,也就是axis object model,處理soap文件。axiom採用pull解析方式,基於stax jsr173 pull解析是最近處理xml的一種趨勢。而sax和dom都是基於push的解析方式,也就是說解析控制在parse...

axis2學習 axis2訊息處理機制

為了更好的理解axis2,我們首先看web services的訊息生命週期的概念。通常,訊息的生命週期如下圖 img 訊息傳送者應用建立原始的soap訊息 由相應的訊息頭和訊息體組成的xml檔案,一旦訊息準備完畢,就會把這些訊息通過http jms等方式傳送出去。如果axis2載入了其他的ws 模組...