首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Axis2 與 JAX-WS 規範演進史:從 JAX-RPC 到現代 Web Services 棧的抉擇

     編輯:Java 相關知識

歷史脈絡:Sun 主導的標準化之路

JAX-RPC 1.0(首代標準)

  • 針對 rpc/encoded SOAP 樣式設計,映射 Java RMI 接口風格。
  • 雖規範要求同時支持 doc/literal,但缺乏 Schema 綁定細節,導致 doc/lit 成為「二等公民」。
  • 廣泛實現:Apache Axis 1.x(最流行)、Sun JAX-RPC RI。

JAX-RPC 2.0 → JAX-WS 2.0(改名重塑)

  • 目標:支持 Java 5 新特性(Annotation、Generics)、異步調用、非 HTTP 傳輸、基於 JAXB 2.0 的完整 Schema 綁定。
  • 為體現改動幅度,更名為 JAX-WS 2.0(Java API for XML Web Services)。
  • 大量使用 Annotation(@WebService, @WebMethod 等),簡化配置,但要求 Java 5+ 運行時。
  • 缺點:缺乏基於部署描述符的後備配置機制,靈活性受限。

JAX-WS 2.0 與 JAXB 2.0 進入 JRE

Java 6 起將 JAX-WS/JAXB 作為核心庫內置(rt.jar),開發者無需額外打包,但也帶來版本鎖定風險(類似早期 JAXP 痛點)。

Apache 陣營:Axis → Axis2 的架構重寫

Axis 1.x 的局限

  • 綁定 JAX-RPC 1.0 模型,擴展性差,難以支持新興 WS-* 標準(WS-Security, WS-ReliableMessaging 等)。
  • doc/literal 支持薄弱,數據綁定僅內置簡單實現。

Axis2 核心創新

Axis2 生態:WS-* 模塊矩陣

  • 核心內置:WS-Addressing、WS-Security (Rampart/WSS4J)
  • Sandesha:WS-ReliableMessaging
  • WSS4J:WS-Trust、WS-SecureConversation
  • Kandula:WS-AtomicTransaction、WS-Coordination

Sun/GlassFish 陣營:Metro (JAX-WS RI + WSIT)

Sun 與 Microsoft 互操作承諾下,開源實現 WCF 棧對應技術(WS-Trust, WS-SecureConversation 等),歸屬 GlassFish/Metro 項目。Metro = JAX-WS RI + JAXB RI + WSIT (Web Services Interoperability Technologies)。

關鍵對比總結

特性說明
AXIOM 對象模型基於 StAX 的延遲構建 XML 模型,按需解析,性能大幅提升,內存佔用降低。
可插拔數據綁定支持 AXIOM 原生、ADB(Axis Data Binding)、XMLBeans、JiBX、JAXB 2.0 等多種綁定,開發者自由選擇。
模塊化架構核心僅負責 SOAP 處理,WS-* 功能以「模塊」形式插入(如 Rampart 做 Security,Sandesha 做 RM)。
不強綁定 JAX-WSAxis2 核心獨立於 JAX-WS,可作為 JAX-WS 實現的底層引擎(如 Apache CXF、Metro 可選用 Axis2 內核)。
維度Axis 1.xAxis2JAX-WS 2.0 (Metro/CXF)
規範基線JAX-RPC 1.0無強綁定(可作為 JAX-WS 引擎)JAX-WS 2.0 標準
數據綁定內置簡單綁定可插拔(ADB, XMLBeans, JiBX, JAXB...)強制 JAXB 2.0
擴展機制Handler 鏈模塊Handler 鏈 + SPI
Annotation 支持無部分(通過包裝層)核心特性
REST 支持無有限JAX-WS 2.0 提供基礎 REST
成熟度/文檔極高(歷史包袱)高(生產就緒)高(標準參考實現)

選型建議

  1. 標準優先:新項目首選 JAX-WS 2.0 實現(Metro、CXF),代碼可移植,符合 Java EE 規範。
  2. 極致性能/靈活綁定:直接使用 Axis2 核心 + ADB/JiBX,繞過 JAX-WS 層,適合高吞吐、特殊 Schema 需求場景。
  3. 遺留維護:Axis 1.x 僅限存量系統維護,禁止新項目引入。
  4. 微服務/REST:考慮 JAX-RS (Jersey/RESTEasy) 或 Spring WebFlux,而非 SOAP 棧。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved