Java2WSDL 工具會將 Java™ 類別對映至 WSDL 文件。
Java2WSDL 工具輸入接受 Java 類別,且會產生代表這個類別的 WSDL 檔來作為輸出。
如果輸出位置有檔案存在,就會改寫它。
Java2WSDL 所產生的 WSDL 文件含有從輸入類別自動衍生的 WSDL 和 XML 綱目建構。
指令行引數允許置換許多這些預設值。
語法
Java2WSDL 工具在 <WS-install-dir>\appserver\bin 目錄中。
Java2WSDL [<arguments>] <class>
引數
強制引數:
<class> - 下列其中一個 Java 類別的完整名稱(包括套件名稱):
- Stateless Session EJB 遠端介面(繼承 javax.ejb.EJBObject)
- 服務端點介面(繼承 java.rmi.Remote)
- Java Bean
Java2WSDL 工具會在 CLASSPATH 中尋找類別。
選用引數:
- -help
- 顯示說明訊息。
- -output <WSDLfile>
- 指出輸出 WSDL 檔的路徑和檔案名稱。如果沒有指定的話,會將預設的 WSDL 檔 <class>.wsdl 寫入現行目錄中。
- 資料類型
- 字串。
- 單位
- 不適用。
- 預設值
- 現行目錄中的 <class>.wsdl。
- 範圍
- 系統的合法檔案名稱。
- -location <location>
- 提供服務的位置 (URL)。這個值通常是在部署 Web 服務時自動填入的。如果您要在沒有部署的情況下產生含有位置 URL 的 WSDL 檔,請利用這個引數來指定位置。如果沒有指定位置,就會出現警告來提醒您不應發佈產生的 WSDL 檔,因為最終位置未定。最後一個斜線或反斜線之後的名稱是服務埠的名稱(除非 -servicePortName 引數改寫了名稱)。
指定的值會指派給服務埠位址位置屬性。
- 資料類型
- 字串。
- 單位
- 不適用。
- 預設值
- file:undefined_location。
- 範圍
- 合法 URL 字串。
- -portTypeName <name>
- 指出 portType 元素所用的名稱。如果沒有指定的話,會使用 <class> 名稱。
- 資料類型
- 字串。
- 單位
- 不適用。
- 預設值
- <class>。
- 範圍
- 不適用。
- -bindingName
- 指出連結元素要用的名稱。如果沒有指定的話,連結名稱就是利用 SOAPBinding 來附加的服務元素名稱(-serviceElementName 引數)。
- 資料類型
- 字串。
- 單位
- 不適用。
- 預設值
- <serviceElementName> <SOAPBinding>。
- 範圍
- 不適用。
- -serviceElementName <name>
- 指出服務元素的名稱。
- 資料類型
- 字串。
- 單位
- 不適用。
- 預設值
- <portTypeName> Service,其中 <portTypeName> 是 -portTypeName 引數所指定的名稱或預設 portTypeName。
- 範圍
- 不適用。
- -servicePortName <name>
- 指出服務的名稱。如果未指定的話,會從 -location 引數衍生服務名稱。
- 資料類型
- 字串。
- 單位
- 不適用。
- 預設值
- -location 引數最後一個反斜線 '\' 之後的名稱,或 <class> 名稱。
- 範圍
- 不適用。
- -namespace <targetNamespace>
- 指出產生的 WSDL 文件的目標名稱空間。
- 資料類型
- 字串。
- 單位
- 不適用。
- 預設值
- 對映至名稱空間的 <class> 之套件名稱。
- 範圍
- 不適用。
- -PkgtoNS <package> <namespace>
- 指出 Java 套件至名稱空間的對映。
如果發現沒有名稱空間的套件,就會產生適用的名稱空間名稱。您可以重複這個引數來指定多個套件的對映。
- 套件:
- 資料類型
- 字串。
- 單位
- 不適用。
- 預設值
- 不適用。
- 範圍
- Java 套件名稱。
- 名稱空間:
- 資料類型
- 字串。
- 單位
- 不適用。
- 預設值
- 不適用。
- 範圍
- 不適用。
- -methods <method> [,<method>...]
- 如果指定了這個引數,只有類別中所指出的方法會匯出在 WSDL 檔中。方法清單必須用逗點分開。
如果沒有指定的話,類別所定義的所有方法都會匯出在 WSDL 檔中。
- 資料類型
- 逗號分隔的字串清單。
- 單位
- 不適用。
- 預設值
- <class> 所定義的所有方法。
- 範圍
- <class> 或其母項類別所定義的方法。
-all 引數是另一個方式,供您選取要併入的方法。
- -all
- 如果指定了這個引數,Java2WSDL 會查看母項類別,來判斷要匯出至 WSDL 檔的方法清單。如果指定 -all,就不會使用 -methods 引數。-stopClasses 引數指定何時終止方法的向上掃描。
- -implClass <impl-class>
- Java2WSDL 工具會利用方法參數名稱來建構 WSDL 訊息組件名稱。訊息名稱是從 <class> 內的除錯資訊中取得的。如果編譯這個類別時沒有除錯資訊,或如果它是介面,就無法使用方法參數名稱。在這個情況下,請利用 -implClass 引數來提供要從中取得方法參數名稱的替代類別。如果 <class> 是介面,<impl-class> 就不需要實作 <class>,但它必須實作 <class> 的相同方法。
- 資料類型
- 字串。
- 單位
- 不適用。
- 預設值
- 不適用。
- 範圍
- CLASSPATH 中實作 <class> 之相同方法的 Java 類別。
- -stopClasses <parent> [,<parent>...]
- Java2WSDL 會搜尋繼承的類別和介面來建構 WSDL 作業的方法清單(如果指定 -all 引數的話)。
當產生匯出的 complexTypes 時,Java2WSDL 會搜尋繼承的類別和介面。每當在開頭是 Java 或 Javax 的套件內找到類別或介面時,搜尋都會停止。
您也可以利用 -stopClasses 引數來定義會使搜尋停止的其他類別。
- 資料類型
- 逗點分開的字串清單。
- 單位
- 不適用。
- 預設值
- 預設的 stopClasses 是 java.* 和 javax.*
- 範圍
- <class> 的母類別。
- -style RPC | DOCUMENT |
WRAPPED
- 指定產生的 WSDL 要用的 WSDL 樣式。這個引數搭配 -use 引數來使用。
- 如果您設定 -use ENCODED 來指定 RPC,或略過 -use,就會產生 style=rpc/use=encoded WSDL。
- 如果您設定 -use LITERAL 來指定 RPC,就會產生 style=rpc/use=literal。
- 如果您設定 -use LITERAL 來指定 DOCUMENT,或略過 -use,就會產生 style=document/use=literal WSDL。
- 如果您指定設定了 -use LITERAL 的 WRAPPED,或略過 -use,就會產生含 "wrapped" 格式的 style=document/use=literal WSDL。
WRAPPED 格式代表:
- 產生要求和回應的 complexType。
- 要求的 complexType 與 operation.request 同名,且含有各輸入參數的元素。
- 回應的 complexType 是作業的名稱 + "Response",且含有每個輸出的元素。
- 要求訊息參照含有名稱為 "body" 的單一組件之要求 complexType。
- 資料類型
- 字串。
- 單位
- 不適用。
- 預設值
- RPC。
- 範圍
- RPC、DOCUMENT 或 WRAPPED。
- -use LITERAL | ENCODED
- 和 -style 引數共同決定了要在 WSDL、RPC/Enc、RPC/Lit、Doc/Lit 或 Doc-wrapped/Lit 中產生 style 和 use 四種組合中的哪一種。
如果需要詳細資訊,請參閱 WSDL 連結區段。
- 資料類型
- 字串。
- 單位
- 不適用。
- 預設值
- 如果 style 是 RPC,就是 ENCODED;否則是 LITERAL。
- 範圍
- ENCODED 或 LITERAL.
- --outputWsdlMode <mode>
- 產生 WSDL 服務介面文件或 WSDL 服務實作文件,它會隨著 <mode> 值(分別是 Interface 或 Implementation)而不同。
附註:引數前面必須有兩個連字號,否則,它就與 -output 引數沒有分別。
疑難排解
Java2WSDL 所產生的 WSDL 可能含有非預期的元素。請檢視 JAX-RPC 規格,以取得所執行之轉換的詳細資訊。
您也可以建立一些 WSDL 文件,讓它們在利用 WSDL2Java 工具以 Java 重新產生時,建立不可編譯的輸出。
這是因為從 Java 至 WSDL 的 JAX-RPC 對映是不可回復的。如果您發現這個問題,請檢查 WSDL 檔,依照需要來修改它,以取得所需要的結果。