-
@Documented @Retention(RUNTIME) @Target(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>- 導入されたバージョン:
- 1.6, JAX-WS 2.1