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

Apache CXF wsdl2java 工具完整使用指南:對比 JDK wsimport、離線/在線生成、參數詳解

     編輯:Java 綜合教學

Apache CXF wsdl2java 工具完整使用指南:對比 JDK wsimport、離線/在線生成、參數詳解

wsdl2java vs wsimport 核心差異

特性JDK wsimportCXF wsdl2java
SOAP 版本支援僅 SOAP 1.1,1.2 解析不全完整支援 SOAP 1.1/1.2
JDK 版本要求JDK 1.6.0_21+基於 JDK 1.7 生成代碼,需微調
生成代碼風格標準 JAX-WSCXF 增強模型,含 Client/Server 模板
依賴管理零依賴(JDK 內建)需 CXF 運行時庫

環境準備

  1. 下載 Apache CXF(如 apache-cxf-2.7.10.zip):官網下載
  2. 解壓至目錄(如 D:\apache-cxf-2.7.10)
  3. 配置環境變量:
    • CXF_HOME=D:\apache-cxf-2.7.10
    • Path 追加 %CXF_HOME%\bin
  4. 驗證:CMD 輸入 wsdl2java 顯示 usage 即成功

常用命令範例

# 生成客戶端代碼(指定包名、輸出目錄)
wsdl2java -d E:\workspace\CXF_client\src -p com.cxf.client https://localhost:9007/Webservice/hello?wsdl

# 生成服務端骨架代碼
wsdl2java -d E:\workspace\CXF_server\src -p com.cxf.server -server https://localhost:9007/Webservice/hello?wsdl

# 生成所有代碼(類型、服務、代理、實現、構建腳本)
wsdl2java -d E:\workspace\CXF_all\src -p com.cxf.all -all https://localhost:9007/Webservice/hello?wsdl

# 使用本地 WSDL 文件
wsdl2java -p com.local -d E:\src -all hello.wsdl

參數詳解

  • -d:輸出目錄
  • -p:包名(覆蓋 WSDL targetNamespace)
  • -client:生成客戶端測試代碼
  • -server:生成服務端啟動代碼
  • -impl:生成服務實現模板
  • -ant:生成 build.xml
  • -all:生成所有工件(等同 -client -server -impl -ant)

生成代碼後常見調整

  1. JDK 1.7 生成代碼可能含 @WebService(targetNamespace="") 空命名空間,需補全
  2. 若使用 Maven,建議改用 cxf-codegen-plugin 在構建階段自動生成
  3. 客戶端調用建議封裝 JaxWsProxyFactoryBean 而非直接用生成的 _Service 類

Maven 插件配置(推薦)

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>3.1.5</version>
    <executions>
        <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <configuration>
                <wsdlOptions>
                    <wsdlOption>
                        <wsdl>src/main/resources/wsdl/hello.wsdl</wsdl>
                        <extraargs><extraarg>-p</extraarg><extraarg>com.cxf.client</extraarg></extraargs>
                    </wsdlOption>
                </wsdlOptions>
            </configuration>
            <goals><goal>wsdl2java</goal></goals>
        </execution>
    </executions>
</plugin>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved