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.47.2. Using WebApplicationException exceptions to report errors
Overview Copy linkLink copied to clipboard!
Copy linkLink copied to clipboard!
					The JAX-RS API introduced the 
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 Copy linkLink copied to clipboard!
Copy linkLink copied to clipboard!
					The easiest means of creating a 
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.
				
					When an exception created by either of these constructors is thrown, the runtime returns a response with an empty entity body and a status code of 
500 Server Error.
				Setting the status code returned to the client Copy linkLink copied to clipboard!
Copy linkLink copied to clipboard!
					When you want to return an error code other than 
500, you can use one of the four WebApplicationException constructors that allow you to specify the status. Two of these constructors, shown in Example 47.1, “Creating a WebApplicationException with a status code”, take the return status as an integer.
				Example 47.1. Creating a WebApplicationException with a status code
WebApplicationException(int status);WebApplicationException(java.lang.Throwable cause,
                        int status);
					The other two, shown in Example 47.2, “Creating a 
WebApplicationException with a status code” take the response status as an instance of Response.Status.
				Example 47.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);
					When an exception created by either of these constructors is thrown, the runtime returns a response with an empty entity body and the specified status code.
				
Providing an entity body Copy linkLink copied to clipboard!
Copy linkLink copied to clipboard!
					If you want a message to be sent along with the exception, you can use one of the 
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.
				
					Example 47.3, “Sending a message with an exception” shows code for returning a text message to a client containing the reason for the exception and sets the HTTP message status to 
409 Conflict.
				Example 47.3. Sending a message with an exception
Extending the generic exception Copy linkLink copied to clipboard!
Copy linkLink copied to clipboard!
					It is possible to extend the 
WebApplicationException exception. This would allow you to create custom exceptions and eliminate some boiler plate code.
				
					Example 47.4, “Extending 
WebApplicationException” shows a new exception that creates a similar response to the code in Example 47.3, “Sending a message with an exception”.
				Example 47.4. Extending WebApplicationException