Module  java.xml.ws
软件包  javax.xml.ws

Annotation Type FaultAction



  • @Documented
    @Retention(RUNTIME)
    @Target(METHOD)
    public @interface FaultAction
    所述FaultAction注解用于内部Action注释以允许WS寻址的显式关联Action与消息寻址属性fault从异常类映射到的WSDL操作的消息。

    wsam:Action在属性值fault在映射所生成的WSDL操作消息className类是等于在相应的值FaultAction 对于故障消息的wsam:Action值的精确计算,请参考JAX-WS规范中的算法。

    实施例1:显式指定值Action消息寻址属性为inputoutputfault消息如果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:这是一个示例,显示如果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>  
    从以下版本开始:
    1.6,JAX-WS 2.1
    • Required Element Summary

      Required Elements  
      Modifier and Type Required Element 描述
      Class<? extends 异常> className
      异常类的名称。
    • Optional Element Summary

      Optional Elements  
      Modifier and Type Optional Element 描述
      String value
      WS-Addressing的值 Action异常的消息寻址属性。
    • Element Detail

      • className

        Class<? extends 异常> className
        异常类的名称。
        结果
        异常类的名称
      • value

        String value
        WS-Addressing的值 Action异常的消息寻址属性。
        结果
        WS-Addressing Action用于异常的消息寻址属性
        Default:
        “”