3.6.3 WSDLからJava例外へのマッピング
WSDL2Javaコマンドによって,WSDL Faultに対応するソースコードを生成できます。WSDLとJava例外のマッピングを次の図に示します。
WSDL Fault(wsdl: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からマッピングされるユーザ定義例外の宣言を示します。
Java文法 |
ユーザ定義例外の宣言 |
---|---|
パッケージ名※1 |
xsd:schema要素のtargetNamespace属性値※2 |
クラス修飾子 |
"public" |
例外名 |
xsd:complexType要素のname属性値 |
スーパークラス |
java.lang.Exception ただし,xsd:extension要素を利用して派生している場合は,派生元のxsd:complexType要素に対応する例外 |
(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仕様では必須ですが,Application Serverでは必須ではありません。name属性が定義されていない場合,処理が続行されます。また,name属性が定義されている場合でも,name属性の値は利用されません。