@Documented @Retention(value=RUNTIME) @Target(value=METHOD) public @interface FaultAction
FaultAction
注釈は Action
注釈内で使用され、例外クラスからマッピングされた WSDL 操作の fault
メッセージに WS-Addressing の Action
メッセージアドレス指定プロパティーを明示的に関連付けることができます。
className
クラスに対してマッピングされた、生成された WSDL 操作の fault
メッセージ内にある wsam:Action
属性値は、FaultAction
の対応する値と等しくなります。fault メッセージの wsam:Action
値の正確な計算については、JAX-WS 仕様のアルゴリズムを参照してください。
例 1:Java メソッドが、サービス固有の例外を 1 つしかスローしない場合、input
、output
、および fault
メッセージに対応する Action
メッセージアドレス指定プロパティーの明示的な値を指定します。
@WebService(targetNamespace="http://example.com/numbers") public class AddNumbersImpl { @Action( fault = { @FaultAction(className=AddNumbersException.class, value="http://example.com/faultAction") }) public int addNumbers(int number1, int number2) throws AddNumbersException { return number1 + number2; } }生成された WSDL は次のようになります。
<definitions targetNamespace="http://example.com/numbers" ...> ... <portType name="AddNumbersPortType"> <operation name="AddNumbers"> ... <fault message="tns:AddNumbersException" name="AddNumbersException" wsam:Action="http://example.com/faultAction"/> </operation> </portType> ... </definitions>
例 2:サービス固有の例外に対応する Action
メッセージアドレス指定プロパティーの明示的な値が存在しない場合を示す例です。
@WebService(targetNamespace="http://example.com/numbers") public class AddNumbersImpl { public int addNumbers(int number1, int number2) throws AddNumbersException { return number1 + number2; } }生成された WSDL は次のようになります。
<definitions targetNamespace="http://example.com/numbers" ...> ... <portType name="AddNumbersPortType"> <operation name="AddNumbers"> ... <fault message="tns:addNumbersFault" name="InvalidNumbers" wsam:Action="http://example.com/numbers/AddNumbersPortType/AddNumbers/Fault/AddNumbersException"/> </operation> </portType> ... </definitions>
例 3:Java メソッドが複数のサービス固有の例外をスローする場合に、Action
メッセージアドレス指定プロパティーに対して明示的な値を指定する方法を示す例です。
@WebService(targetNamespace="http://example.com/numbers") public class AddNumbersImpl { @Action( fault = { @FaultAction(className=AddNumbersException.class, value="http://example.com/addFaultAction"), @FaultAction(className=TooBigNumbersException.class, value="http://example.com/toobigFaultAction") }) public int addNumbers(int number1, int number2) throws AddNumbersException, TooBigNumbersException { return number1 + number2; } }生成された WSDL は次のようになります。
<definitions targetNamespace="http://example.com/numbers" ...> ... <portType name="AddNumbersPortType"> <operation name="AddNumbers"> ... <fault message="tns:addNumbersFault" name="AddNumbersException" wsam:Action="http://example.com/addFaultAction"/> <fault message="tns:tooBigNumbersFault" name="TooBigNumbersException" wsam:Action="http://example.com/toobigFaultAction"/> </operation> </portType> ... </definitions>
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.