所述FaultAction注解用于内部Action注释以允许WS寻址的显式关联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如下所示:
... ...
wsam:Action="http://example.com/faultAction"/>
...示例2:下面是一个示例,显示服务特定异常的Action消息寻址属性的显式值是否不存在。
@WebService(targetNamespace="http://example.com/numbers")
public class AddNumbersImpl {
public int addNumbers(int number1, int number2)
throws AddNumbersException {
return number1 + number2;
}
}
生成的WSDL如下所示:
... ...
wsam:Action="http://example.com/numbers/AddNumbersPortType/AddNumbers/Fault/AddNumbersException"/>
...示例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如下所示:
... ...
wsam:Action="http://example.com/addFaultAction"/>
wsam:Action="http://example.com/toobigFaultAction"/>
...