Тип аннотации FaultAction
@Documented @Retention(value=RUNTIME) @Target(value=METHOD) public @interface FaultAction
Аннотация FaultAction используется внутри аннотации Action, чтобы разрешить явную привязку свойства адресации сообщения WS-Addressing Action к сообщениям fault операции WSDL, сопоставленной с классом исключения.
Значение атрибута wsam:Action в сообщении fault в сгенерированной операции WSDL, сопоставленной с классом className, равно соответствующему значению в FaultAction. Для точного вычисления значений wsam:Action для сообщений об ошибках см. алгоритм в спецификации JAX-WS.
Пример 1: Укажите явные значения для свойства адресации сообщения Action для сообщений input, output и fault, если Java-метод выбрасывает только одно исключение, специфичное для сервиса.
@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: Вот пример, демонстрирующий, как указать явные значения для свойства адресации сообщения Action, если Java-метод выбрасывает более одного исключения, специфичного для сервиса.
@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>
- С момента:
- JAX-WS 2.1
Обязательные элементы
| Модификатор и тип | Обязательный элемент и описание |
|---|---|
Class<? extends Exception> |
className Имя класса исключения |
Необязательные элементы
| Модификатор и тип | Необязательный элемент и описание |
|---|---|
String |
value Значение свойства адресации сообщения WS-Addressing |
Элементы
className
public abstract Class<? extends Exception> className
Имя класса исключения
value
public abstract String value
Значение свойства адресации сообщения WS-Addressing Action для исключения
- По умолчанию:
- ""
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.