@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, 2014, Oracle and/or its affiliates. All rights reserved.