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