2010-09-03 39 views
7

我一直在玩Apache CXF,特別是它支持的各種數據綁定:JAXB(默認),MTOM,Aegis和XMLBeans。既然所有這些都得到支持,我想每個人都有其優點。我想出了這些:在CXF中,爲什麼使用除JAXB之外的任何其他綁定? (MTOM附件,Aegis,XMLBeans,...)

  • 很明顯,MTOM是優先考慮的地方涉及大型附件。
  • JAXB依賴於註釋,所以當修改類受到限制時它不太適合。
  • Aegis沒有wsdl2java工具,所以它不太適合「合同優先」的開發,即從WSDL開始並從中生成Java代碼。
  • 似乎宙斯盾在類.aegis.xml文件提供通過其聲明語法在Java類和XML之間的映射稍微控制。另一方面,我無法設想JAXB沒有做到這一點。

我發現這個問題並列JAXB和XMLBeans的,但它沒有給出一個全面的概述:

JAXB vs Apache XMLBeans

除了這些天真的,先驗的考慮,你有任何血液 - 和 - 有沒有經驗可以支持除JAXB以外的任何其他綁定?我是從CXF的角度來問的,但是如果有其他選擇的話(例如Castor),請不要猶豫,詳細說明。

回答

3

如果從頭開始創建WSDL第一個Web服務,那麼我絕對會推薦在95%的時間內(或許更高)使用JAXB。這絕對是CXF中測試最好的數據綁定,表現相當出色。

當其他數據綁定進來通常是兩種情況之一:

1),你已經用Java編寫的,你要公開與小Web服務來進行任何修改的東西Java的第一個用例到代碼。 Aegis在這裏具有強大的優勢,因爲它旨在能夠處理比JAXB更廣泛的事物。但是,如果您可以修改代碼,那麼添加JAXB註釋通常並不困難。如果你有大部分正常的「豆類」,這不是什麼大不了的事情。

2)使用特定映射的現有應用程序。如果您的應用程序需要XMLBeans bean(或者如果使用2.3-SNAPSHOT CXF,則使用SDO bean,如果使用GSoC項目,則使用JiBX bean),那麼使用其他數據綁定可以通過從JAXB移除所需的映射到這些對象模型。

希望有所幫助。

3

記住JAXB is a specification所以有多種實現:Metro(參考實現,MOXy(我是技術主管)等

JAXB從Java類或XML模式開始被使用如果你有課。無法修改個別JAXB implmentations提供擴展來處理該問題。見莫西的外部化的元數據:

JAXB的設計採用了MTOM附件見附件編組/解組工作。

莫西已經基於XPath的它提供了你的對象到XML綁定看到的完全控制映射:

相關問題