少年阿賓

          那些青春的歲月

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks

          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。 be meant to:有意要、打算
              XMLBeans:與ADB不同,他是一個全功能的schema編譯器。他沒有ADB的限制。然而,他也比ADB用起來更復雜。他會產成大量的文件,編程模型不如ADB直觀。
              JiBX:他是一個數據綁定框架。他不僅提供了WSDL-JAVA的轉換,而且提供了JAVA-XML的轉換。JiBX相當靈活,允許你選擇類來代表你的實體,但是這個卻不好做,但還句話說,如果這些都能建好,那么使用JiBX就更使用ADB一樣容易。

          對于簡單應用來說ADB已經夠用了,如果想用更加強大更加靈活的功能,那么你可能需要使用其他兩種方式。

          Axis2提供的四種調用模式

          Web services可以用來為用戶提供廣泛的功能,從簡單的、少時間消耗的功能到多時間消耗的業務服務。當我們使用(調用客戶端的應用程序)這些Web Service時,我們不能用簡單的調用機制來針對那些對時間消耗有很大要求的服務操作。例如,如果我們使用一個簡單的傳輸通道(如HTTP)并使用IN-OUT模式來調用一個需要很長時間來完成的Web Service,那么多數情況下,我們得到的結果將是"connection time outs"。另一方面,如果我們從一個簡單的客戶端應用程序調用一個同步的服務,使用"blocking"的客戶端API將會降低客戶端應用程序的性能?,F在來分析一下一些常用的服務調用形式。

          許多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的實現方式。

          posted on 2013-01-20 20:13 abin 閱讀(2000) 評論(0)  編輯  收藏 所屬分類: AXIS2
          主站蜘蛛池模板: 延庆县| 扬中市| 滨州市| 河间市| 泗水县| 荔浦县| 上杭县| 宁乡县| 长沙县| 吉木乃县| 紫金县| 合肥市| 精河县| 上高县| 峡江县| 金华市| 仁化县| 新余市| 监利县| 蚌埠市| 泽州县| 龙泉市| 阜城县| 墨江| 新和县| 阳城县| 齐河县| 南京市| 错那县| 吉安县| 小金县| 肇州县| 远安县| 永仁县| 阿鲁科尔沁旗| 且末县| 清河县| 金乡县| 昌都县| 桓仁| 济阳县|