Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.Dieser Inhalt ist in der von Ihnen ausgewählten Sprache nicht verfügbar.
49.2. Using WebApplicationException exceptions to report errors
Overview
WebApplicationException
runtime exception to provide an easy way for resource methods to create exceptions that are appropriate for RESTful clients to consume. WebApplicationException
exceptions can include a Response
object that defines the entity body to return to the originator of the request. It also provides a mechanism for specifying the HTTP status code to be returned to the client if no entity body is provided.
Creating a simple exception
WebApplicationException
exception is to use either the no argument constructor or the constructor that wraps the original exception in a WebApplicationException
exception. Both constructors create a WebApplicationException
with an empty response.
500 Server Error
.
Setting the status code returned to the client
500
, you can use one of the four WebApplicationException
constructors that allow you to specify the status. Two of these constructors, shown in Example 49.1, “Creating a WebApplicationException
with a status code”, take the return status as an integer.
Example 49.1. Creating a WebApplicationException
with a status code
WebApplicationException(int status);
WebApplicationException(java.lang.Throwable cause,
int status);
WebApplicationException
with a status code” take the response status as an instance of Response.Status
.
Example 49.2. Creating a WebApplicationException
with a status code
WebApplicationException(javax.ws.rs.core.Response.Status status);
WebApplicationException(java.lang.Throwable cause,
javax.ws.rs.core.Response.Status status);
Providing an entity body
WebApplicationException
constructors that takes a Response
object. The runtime uses the Response
object to create the response sent to the client. The entity stored in the response is mapped to the entity body of the message and the status field of the response is mapped to the HTTP status of the message.
409 Conflict
.
Example 49.3. Sending a message with an exception
import javax.ws.rs.core.Response; import javax.ws.rs.WebApplicationException; import org.apache.cxf.jaxrs.impl.ResponseBuilderImpl; ... ResponseBuilderImpl builder = new ResponseBuilderImpl(); builder.status(Response.Status.CONFLICT); builder.entity("The requested resource is conflicted."); Response response = builder.build(); throw WebApplicationException(response);
Extending the generic exception
WebApplicationException
exception. This would allow you to create custom exceptions and eliminate some boiler plate code.
WebApplicationException
” shows a new exception that creates a similar response to the code in Example 49.3, “Sending a message with an exception”.
Example 49.4. Extending WebApplicationException
public class ConflicteddException extends WebApplicationException { public ConflictedException(String message) { ResponseBuilderImpl builder = new ResponseBuilderImpl(); builder.status(Response.Status.CONFLICT); builder.entity(message); super(builder.build()); } } ... throw ConflictedException("The requested resource is conflicted.");