@DocumentedSE @RetentionSE(valueSE=RUNTIMESE) @TargetSE(valueSE=METHODSE) public @interface FaultAction
FaultAction
アノテーションは Action
アノテーション内で使用され、WS-Addressing Action
メッセージアドレス指定プロパティと例外クラスからマップされた WSDL 操作の fault
メッセージとの明示的な関連付けを可能にします。className
クラスにマップされた生成された WSDL 操作の fault
メッセージの wsam:Action
属性値は、FaultAction
の対応する値と同じです。障害メッセージの wsam:Action
値の正確な計算については、Jakarta XML Web Services 仕様のアルゴリズムを参照してください。
例 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>
修飾子と型 | 必須要素と説明 |
---|---|
ClassSE<? extends ExceptionSE> | className 例外クラスの名前。 |
public abstract ClassSE<? extends ExceptionSE> className
public abstract StringSE value
Action
メッセージアドレス指定プロパティの値。Action
メッセージアドレス指定プロパティ Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.