@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.