15.1.7 フォルトから例外クラスへのマッピング
WSDLのフォルト(wsdl:fault要素から参照されるwsdl:message要素のname属性)から例外クラスへのマッピングについて説明します。
(1) マッピング
cjwsimportコマンドを実行すると,WSDLのフォルトは,JAX-WS 2.2仕様に従ってJava型にマッピングされます。マッピング例を次の図に示します。
-
JAX-WS 2.2仕様に従ったフォルトbeanが生成されます。フォルトのパートから参照されるグローバル要素宣言が,フォルトbeanにマッピングされます。
-
JAX-WS 2.2仕様に従ったラッパ例外クラスが生成されます。生成されたラッパ例外クラスは,java.lang.Exceptionクラスを継承し,javax.xml.ws.WebFaultアノテーションを持ちます。また,生成されたラッパ例外クラスは,次のメソッドを持ちます。
-
FaultMessageName(String message, FaultBean faultInfo)※のコンストラクタ
引数として,メッセージ文字列とフォルトbeanクラスを持ちます。また,このコンストラクタ中で親クラスjavax.xml.ws.WebFaultのコンストラクタが呼び出されます。
-
FaultMessageName(String message, FaultBean faultInfo, Throwable cause)※のコンストラクタ
引数として,メッセージ文字列とフォルトbeanクラス,およびプロトコル固有の例外情報を持ちます。また,このコンストラクタ中で親クラスjavax.xml.ws.WebFaultのコンストラクタが呼び出されます。
-
getFaultInfo()メソッド
引数はありません。戻り値はフォルトbeanクラスです。
- 注※
-
"FaultMessageName"は,フォルトから参照されるメッセージ名(wsdl:message要素のname属性)を表します。また,引数の"FaultBean"は,フォルトbeanクラスの名前を表します。
-
(2) フォルト名の条件
フォルト名には,次の表に示すすべての条件を満たす文字列を記述できます。ただし,バインディング宣言でカスタマイズする場合は,XML Schema仕様のxsd:NCName型として使用できる文字列を記述できます。
(3) フォルトから参照されるメッセージのパートの個数
フォルトは,パートが1個だけ記述されているメッセージを参照できます。フォルトから参照されるメッセージのパートの個数と動作を次の表に示します。
項番 |
記述数 |
動作 |
---|---|---|
1 |
0個 |
標準エラー出力とログにエラーメッセージが出力され,処理が終了されます(KDJW51025-E)。 |
2 |
1個 |
正常終了します。 |
3 |
2個以上 |
標準エラー出力とログにエラーメッセージが出力され,処理が続行されます(KDJW51025-E)。 |
(4) 同じオペレーションのフォルトから同じメッセージを参照している場合の扱い
異なる複数のオペレーションのフォルトから同じメッセージを参照している場合,すべて同じフォルトとして扱われます。したがって,Javaへマッピングするときに,共通のラッパ例外クラスとしてマッピングされます。その例を次の図に示します。
フォルトを記述しているオペレーションと,フォルトから参照されるメッセージの関係を次の表に示します。
項番 |
フォルトを記述しているオペレーション |
フォルトから参照されるメッセージ |
フォルトの扱い |
---|---|---|---|
1 |
異なる |
同じ |
同じフォルトとして扱われます。 |
2 |
異なる |
別のフォルトとして扱われます。 |
|
3 |
同じ |
同じ |
標準エラー出力とログにエラーメッセージが出力され,処理が終了されます(KDJW51026-E)。 |
4 |
異なる |
別のフォルトとして扱われます。 |