Axis2生成客戶端方式
基于StockQuoteService類創建客戶端的四種方式
構建基于AXIOM的客戶端;
使用Axis2 Databinding Frame work(ADB)生成客戶端;
使用XMLBeans生成客戶端;
使用JiBX生成客戶端。
ADB:最簡單的生成Axis客戶端的方法。大部分情況下,這些主要的類都會以內部類的形式創建在stub類中。It is not meant to be a full schema bindingapplication, and has difficulty with structures such as XML Schema element extensions and restrictions。
對于簡單應用來說ADB已經夠用了,如果想用更加強大更加靈活的功能,那么你可能需要使用其他兩種方式。
Axis2提供的四種調用模式
許多Web Service引擎提供給客戶Blocking和Non-Blocking的客戶端APIs。
1)Blocking API-一旦服務被啟用,客戶端的應用程序將被掛起,直到operation被執行完畢(表現為收到一個response或fault),才能重新獲得控制權。這是調用Web Service最簡單的方式,并且這種方式適用于多數業務情形。
2)Non-Blocking API-這是一個回叫或輪詢機制的API。因此,一旦服務被起用,客戶端應用程序馬上得到控制權,通過使用一個callback對象來獲得response。這種方式使得客戶端應用程序可以很方便的同步啟用多個Web Service。
這兩種機制都是工作在API層面上的。稱將通過使用Non-Blocking API而產生的異步行為方式為API Level 異步。這兩種機制都使用單一的傳輸連接來發送request和接收response。它們的性能遠遠落后于使用兩個傳輸連接來發送request和接收response(不管是單工還是雙工)。所以這兩種機制都不能解決需要長時間處理的事務的傳輸問題(在operation處理完成之前,很有可能你的連接已經超時了)。一種可能的解決方法是使用兩個獨立的傳輸連接來發送和接收request&response。這種異步行為,我們稱為Transport Level 異步。
通過組合API Level異步和Transport Level 異步,我們可以得到四種調用模式。如下所示。
API (Blocking/Non-Blocking) |
Dual Transports (Yes/No) |
Description |
Blocking |
No |
最簡單和常用的調用模式 |
Non-Blocking |
No |
使用回叫或輪詢機制 |
Blocking |
Yes |
在單工模式下,service operation為IN-OUT時,很有用。(如SMTP) |
Non-Blocking |
Yes |
此模式下的異步效果最大 |
Axis2提供了所有上述4種調用Web Service的實現方式。