一. 簡介
axis2 是繼 axis1 之後 apache 軟體組織推出的下一代 webservice 的實現品 , 和 1.0 比較有如下較大的改進 :
1.不是在 axis1 的基礎上擴充套件,而是重新開發,重新實現。
2.支援 soap1.1 和 soap1.2. 及 rest 風格。
3.新的 xml 處理物件模型 axiom, 更快更有效率。
4.客戶端支援同步、非同步、單通道、雙通道。
5.支援 http smtp 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學習筆記一 axiom 篇 一 簡介 axis2 是繼 axis1 之後 apache 軟體組織推出的下一代 webservice 的實現品 和 1.0 比較有如下較大的改進 1.不是在 axis1 的基礎上擴充套件,而是重新開發,重新實現。2.支援 soap1.1 和 soap1.2.及...
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 模組...