JAX-WS – Map Exceptions to faults

Did you try to annotate your exception with @WebFault? Also, do you implement getFaultInfo()?

EDIT: I realize my answer was maybe not detailed enough. As reminded in this thread (for example):

The JAX-WS 2.0 specification demands
that the exception annotated with
@WebFault must have two constructors
and one method [getter to obtain the fault information]:

WrapperException(String message, FaultBean faultInfo)
WrapperException(String message, FaultBean faultInfo, Throwable cause)
FaultBean getFaultInfo()

The WrapperException is replaced by
the name of the exception, and
FaultBean is replaced by the class
name that implements the fault bean.
The fault bean is a Java bean that
contains the information of the fault
and is used by the Web service client
to know the cause for the fault.

This is detailed in section 2.5 Fault of the JAX-WS specification. Does your exception conform to this? Can you post the code?


The OP is right. As per specification 2.1, section 3.7 Service Specific Exception, it is not required to use the @WebFault annotation, JAX-WS can generate the wrapper beans dynamically for exceptions that do not match the pattern described in section 2.5 (just provide a getter for the information you want to be present in the fault). For exceptions that match the pattern described in section 2.5 (i.e. exceptions that have a getFaultInfo method and @WebFault annotation), the FaultBean is used as input to JAXB when mapping the exception to XML Schema.

So the solution suggested above (matching the pattern described in section 2.5) is only a workaround. The generation of wrapper beans should just work for other exceptions. And I don’t know why this fails here.

Leave a Comment