簡體   English   中英

在CXF中,為什么使用除JAXB以外的任何其他綁定? (MTOM附件,Aegis,XMLBeans等)

[英]Within CXF, why use any other binding than JAXB? (MTOM attachments, Aegis, XMLBeans,…)

我一直在使用Apache CXF,特別是它支持的各種數據綁定:JAXB(默認),MTOM,Aegis和XMLBeans。 由於所有這些都得到支持,我想每個都有其優點。 我想出了這些:

  • 顯然,在涉及大型附件時,MTOM是首選。
  • JAXB依賴於注釋,因此在限制類的修改時,它不太適合。
  • Aegis沒有wsdl2java工具,因此它不太適合“合同優先”開發,即從WSDL開始並從中生成Java代碼。
  • 看來 ,宙斯盾提供了通過 .aegis.xml文件的聲明語法的Java類和XML之間的映射稍微控制。 另一方面,我無法設計出JAXB不能解決問題的任何方案。

我發現這個問題將JAXB和XMLBeans並置,但是並沒有給出全面的概述:

JAXB與Apache XMLBeans

除了這些天真,先驗的考慮之外,您是否有任何血統和經驗可以支持除JAXB之外的任何其他綁定的使用? 我是從CXF的角度問的,但是如果有其他選擇(例如Castor),請不要猶豫。

如果要從頭開始創建WSDL首個Web服務,那么我絕對建議95%的時間堅持使用JAXB(甚至更高)。 它絕對是CXF中經過最好測試的數據綁定,並且性能很好。

其他數據綁定通常出現在以下兩種情況之一:

1)Java的第一個用例是,您已經用Java編寫了一些內容,希望將其作為Web服務公開,而幾乎不需要修改代碼。 Aegis在這里具有自己的優勢,因為它可以處理比JAXB更廣泛的事務。 但是,如果您可以修改代碼,則添加JAXB批注通常並不難。 如果您大部分都是普通的“豆”,那沒什么大不了的。

2)使用特定映射的現有應用程序。 如果您有期望使用XMLBeans Bean的應用程序(如果使用CXF的2.3-SNAPSHOT則為SDO Bean,如果遵循GSoC項目則為JiBX Bean),那么使用其他數據綁定可以通過刪除JAXB到那些對象模型的任何所需映射來提供幫助。

希望能有所幫助。

請記住, JAXB是一個規范,因此有多種實現方式: Metro (參考實現), MOXy (我是技術負責人)等。

可以從Java類或XML模式開始使用JAXB。 如果您有無法修改的類,則單個JAXB實現會提供擴展來處理該類。 請參閱MOXy的可外部化元數據:

JAXB旨在與MTOM附件一起使用,請參閱附件marshaller / unmarshaller。

MOXy具有基於XPath的映射,可以完全控制對象到XML的綁定,請參見:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM