利用 WSDL2WebService 工具建立 Web 服務

您可以利用 WSDL2WebService 工具,在指令行透過 IBM® WebSphere® 執行時期環境,從 WSDL 檔產生 Web 服務。

必備條件:

您可以在下列三個階段中使用這個工具:

  1. 設定 -createService 引數執行工具,來建立特定 WSDL 文件所說明之 Web 服務的 Skeleton Java 實作範本。
  2. 在範本中撰寫您的實作程式碼,並利用第 1 階段產生的建置 Script 來編譯它。
  3. 再次設定 -createEar 引數來執行工具,以從這個實作建置啟用 Web 服務的保存檔。

附註:您可以執行第 1 階段許多次,以在相同專案目錄中建立相關的 Web 服務。之後,在第 3 階段中,您可以建立每個這些 Web 服務的個別模組,並將這些模組加入相同的 EAR 檔中。

指令行設定

在使用 WSDL2WebService 工具之前,您必須先依照下列方式來設定 Web 服務指令行:

  1. 從命令提示字元切換至 Rational® Developer 產品的 bin 目錄。 
  2. 執行下列批次 Script:
    • Windows®setupenv.bat
    • Linux:. setupenv.sh
  3. 切換至要建立 Web 服務的目錄。我們將這個目錄稱為指令行測試目錄。 Linux:您必須有這個目錄的寫入存取權。

現在,您可以執行 WSDL2WebService 工具的第 1 階段。

建立 Skeleton Web 服務實作

附註:WSDL2WebService 工具有兩個版本。如果您執行 WSDL2WebService 指令, 該指令會使用 J2EE 1.4。另外,您可以使用 WSDL2WebService13 指令,該指令會使用 J2EE 1.3。針對以下任一指令,如果您要建立使用 J2EE 1.3 的 Web 服務,您可以將 WSDL2WebService 換成 WSDL2WebService13

如果要建立 Skeleton Web 服務實作,請在命令提示字元中輸入下列指令:

  • Windows: WSDL2WebService [<選用性引數>] -createService <ServiceName> -project <ProjectDir> <WSDL URI>
  • Linux: WSDL2WebService.sh [<選用性引數>] -createService <ServiceName> -project <ProjectDir> <WSDL URI>

附註:最終引數必須是 <WSDL URI>,區分大小寫。 請參閱 WSDL2WebService 工具,以取得選用和強制性引數的清單。

提示:
  • 建議您指定選用引數:-host <hostname:port>。 該指令的預設埠為 6080,但是 WebSphere Application Server 的預設埠為 9080。
  • 記下您指定給 -project 的指令行測試目錄路徑和名稱。當您部署及測試 Web 服務時,會需要這項資訊。

設定 -createService <ServiceName> 引數來執行這個工具之後,會在指定的專案下,建立含有若干子目錄的 <ServiceName> 目錄。這些子目錄含有建置 Web 服務實作所需要的所有必要 Java 範本。

以下是如何使用 WSDL2WebService 工具的範例:

WSDL2WebService -createService ejb1Service -project dir:\myproj\ejbDir -host localhost:9080 -contextRoot ejb1Service -type EJB -verbose dir:\TempConv.wsdl

編譯實作程式碼

您必須修改 Skeleton Java 檔,它們才可以正確實作您要建立的 Web 服務。將正確的程式碼新增至 Java Skeleton 之後,必須編譯它們。另外,也會產生稱為 compile 的建置 Script 來協助您編譯這個程式碼。

如果要編譯實作程式碼,請執行下列動作:

  1. 切換至 <ServiceName> 目錄。
  2. 如果您的實作程式碼相依於 JAR 檔或含有 .class 檔的目錄,請編輯編譯 Script,再將這些相依項的完整路徑名稱加入 USER_CLASSPATH 變數中,比方說:
    • Windows:set USER_CLASSPATH = c:\MyJars\webservice.jar;c:\MyClasses
    • Linux: USER_CLASSPATH = /home/MyJars/webservice.jar:/home/MyClasses
  3. 輸入下列指令:
    • Windows:  compile
    • Linux:  compile.sh
    請注意,執行這個指令不需要任何參數。

建立啟用 Web 服務的保存檔

當您建立服務、將實作程式碼新增至 Java Skeleton 及編譯新程式碼之後,您必須建立啟用 Web 服務的保存檔。如果要建立啟用 Web 服務的保存檔,請在命令提示字元中輸入下列指令:

  • Windows: WSDL2WebService [<選用性引數>] -createEar <File.ear> -project <ProjectDir>
  • Linux: WSDL2WebService.sh [<選用性引數>] -createEar <File.ear> -project <ProjectDir>

請參閱 WSDL2WebService 工具,以取得選用和強制性引數的說明。

提示:如果您要部署和測試您的 Web 服務,請記下指令行測試目錄路徑和您指定給 -project 的名稱。

寫好、編譯好實作程式碼,且設定 -createEar <File.ear> 引數來重新執行工具之後,輸出就是新的或更新的 EAR 檔。其中含有 -add 引數指定的每個 Web 服務名稱的 Web 服務模組。 您也會發現,實作 Web 服務的伺服器端類別已移至 WEB-INF\classes 目錄中,這是它的正常位置。如果您沒有指定 -server-side-only 引數,就會同時建立含有某些額外 Java 檔(其中包括您的複式類型的序列化常式和解除序列化常式類別)的用戶端目錄。

產生 EAR 檔之後,您就可以將它部署在伺服器中,供他人使用。

以下是如何建立啟用 Web 服務的保存檔的範例:
WSDL2WebService -createEAR dir:\myear\ejb1ear.ear -project dir:\myproj\ejbDir -add ejb1Service -verbose localhost:9080/ejb1Service/services/TempConv

重複使用程式碼的支援

WSDL2WebService 工具支援您將(一或多個被包含的 Web 服務所存取的)JAR 或 EJB 檔放在 EAR 檔的根目錄中,來重複使用程式碼。您可以將所有類別保存在與服務同名的 JAR 檔中來重複使用 Web 服務實作。請執行下列步驟將類別保存在 JAR 檔中:

  1. 在執行 WSDL2WebService 工具之後,將您要重複使用的 JAR 檔放在專案目錄的起始位置中。請注意,這些可能是 JAR 或 EJB 檔。
  2. 針對需要這些 JAR 檔之專案中的每個 Web 服務,加入 JAR 檔的完整路徑來更新其編譯 Script 中的 USER_CLASSPATH 變數。
  3. 依照正常方式來編譯每個 Web 服務。
  4. 設定 -createEAR 引數來正常執行 WSDL2WebService 工具。WSDL2WebService 工具會自動將 JAR 檔加入 EAR 檔中,再更新所有指向這些 JAR 檔的參照。
重要事項
  • 如果您執行 WSDL2WebService 指令並使用一組會執行本端匯入的 WSDL 檔案來建立 EJB Web 服務, 雖然會產生 EAR 檔,但它匯入到工作區並部署到 Unit Test Environment 或遠端伺服器後, 伺服器啟動時會出現異常狀況。 這個異常狀況是路由器 Web 專案中遺漏 WSDL 所導致的。請執行下列任一項來排除這個錯誤:
    • 利用管理主控台來部署到獨立式 WebSphere Application Server。
    • 使用整體 WSDL - 也就是說,不要使用 -splitWsdl 引數。
    • 將 EJB 專案中 META-INF/wsdl 目錄下的所有 WSDL 檔案手動複製到路由器 Web 專案的 WEB-INF/wsdl
  • 如果您選取 -genResolver 引數,EAR 將無法啟動。問題在於 -genResolver 選項無法處理 WSDL 文件使用 <wsdl:import> 來匯入 XSD 時使用的大小寫。 要避免這個問題,請執行下列一項:
    • 編輯 WSDL,以便使用 <types><schema><import> 來匯入 XSD。
    • 不要在指令行工具使用 -genResolver 選項。
使用條款 | 讀者意見
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.