SeamFramework.orgCommunity Documentation

Chapter 2. Exception Handling

2.1. Seam Catch Integration
2.2. Declarative Exception Mapping
2.2.1. Programmatic configuration
2.2.2. XML configuration
2.2.3. Exception Mapping

The JAX-RS specification defines Exception Mapping Providers as a standard mechanism for treating Java exceptions. The Seam REST module comes with and alternative approach which is more consistent with the CDI programming model, easier to use and still portable.

Firstly, Seam Catch is plugged in which allows exceptions that occur in different parts of an application to be treated uniformly. Besides, a builtin exception handler is provided which enables simple exception-mapping rules to be defined declaratively.

Seam Catch can be used within the Seam REST module for dealing with exceptions. As a result, an exception that occurs during an invocation of a JAX-RS service is routed through the Catch exception handling mechanism which is similar to the CDI event bus and lets exception handling logic to be implemented in a loosely-coupled fashion.

The following code sample demonstrates a simple exception handler that converts the NoResultException exception to the 404 HTTP response.


Similarly to the CDI event bus, exceptions to be handled by a handler method can be filtered by qualifiers. In the example above, we are only interested in exceptions that occur in a JAX-RS service invocation. (As opposed to all exceptions of the given type that occur in the application - in the view layer for example.) Thus, the @RestRequest qualifier is used.

Catch integration is optional and only enabled when Catch libraries are available on classpath. For more information on Seam Catch, see Seam Catch reference documentation .

Often, exception-mapping rules are simple. Thus, they do not really need to be implemented in Java. Instead, declarative approach is more appropriate in these situations. The Seam REST module allows exception types to be bound to HTTP responses declaratively.

For each exception type, it is possible to specify the status code and the error message of the HTTP response. There are two ways of exception mapping configuration in Seam REST.

An alternative and more practical way of configuration is to use the Seam XML module to configure the ExceptionMappingConfiguration and ExceptionMapping classes in XML.

Firstly, the Seam XML module needs to be added to the application. If using maven, this can be done by specifying the following dependency:


For more information on the seam-xml module, refer to the Seam XML reference documentation Once the Seam XML module is added, specify the configuration in the seam-beans.xml file, located in the WEB-INF or META-INF folder of the web archive.


Furthermore, EL expressions can be used in message templates to provide dynamic and more descriptive error messages.