Cosminexus SOAPアプリケーション開発ガイド

[目次][用語][索引][前へ][次へ]

3.6.3 WSDLからJava例外へのマッピング

WSDL2Javaコマンドによって,WSDL Faultに対応するソースコードを生成できます。WSDLとJava例外のマッピングを次の図に示します。

図3-29 WSDLとJava例外のマッピング(WSDL2Javaコマンド実行時)

[図データ]

WSDL Fault(wsdl:fault要素)とユーザ定義例外のマッピングは可逆ではありません。

<この項の構成>
(1) wsdl:part要素の属性
(2) WSDL Faultからマッピングされるユーザ定義例外の宣言
(3) リモートインタフェースの定義
(4) xsd:complexType要素からユーザ定義例外へのマッピング
(5) soap:fault要素の定義

(1) wsdl:part要素の属性

WSDLのwsdl:fault要素から参照されているwsdl:message要素は,wsdl:part要素を一つ持ちます。wsdl:part要素が複数存在する場合,WSDL2JavaコマンドによってKDCCC0239-Eのメッセージが出力されます。Javaソースコードは生成されません。

wsdl:part要素のelement属性が参照できる要素の型,およびtype属性が参照できる型は複合型です。単純型および配列は直接参照できません。単純型または配列を利用する場合は,複合型の子要素として定義してください。

単純型または配列を直接参照するように定義した場合は,WSDL2Javaコマンドによって,KDCCC0238-Eのメッセージが出力されます。Javaソースコードは生成されません。

(2) WSDL Faultからマッピングされるユーザ定義例外の宣言

WSDL2Javaコマンド実行時に,WSDL Faultからマッピングされるユーザ定義例外の宣言を示します。

表3-17 WSDL Faultからマッピングされるユーザ定義例外の宣言

Java文法 ユーザ定義例外の宣言
パッケージ名※1 xsd:schema要素のtargetNamespace属性値※2
クラス修飾子 "public"
例外名 xsd:complexType要素のname属性値
スーパークラス java.lang.Exception
ただし,xsd:extension要素を利用して派生している場合は,派生元のxsd:complexType要素に対応する例外

注※1
3.6.2(1) ユーザ定義例外の定義」で示した利用できないパッケージ名の場合,KDCCC0231-Eのメッセージが出力され,ソースコードは生成されません。

注※2
WSDL2Javaコマンドの-Nオプション,-fオプション,および-pオプションで名前空間とパッケージ名のマッピングを変更できます。

(3) リモートインタフェースの定義

リモートインタフェースのメソッドのthrows節に,必須のjava.rmi.RemoteExceptionに加えて,ユーザ定義例外を定義します。

(4) xsd:complexType要素からユーザ定義例外へのマッピング

xsd:complexType要素の子要素から,ユーザ定義例外のフィールド,メソッド,コンストラクタへのマッピングは,ユーザ定義のデータ型クラスのマッピング規則に従います。

(5) soap:fault要素の定義

wsdl:fault要素は,soap:fault要素を一つ持ちます。wsdl:fault要素にsoap:fault要素が存在しない場合,WSDL2JavaコマンドによってKDCCC0012-Eエラーが出力されます。Javaソースコードは生成されません。wsdl:fault要素にsoap:fault要素が複数存在する場合,WSDL2JavaコマンドによってKDCCC0247-Eエラーが出力されます。Javaソースコードは生成されません。

なお,soap:fault要素のname属性は,WSDL 1.1仕様では必須ですが,Cosminexusでは必須ではありません。name属性が定義されていない場合,処理が続行されます。また,name属性が定義されている場合でも,name属性の値は利用されません。