Search code examples
mavenjersey-2.0grizzly

How can I get the stack trace when 500 server error happens in Jersey?


When in jersey server I have server 500 error:

  • In server response don´t have stack trace or some info.

  • In Eclipse console don´t have exception stack trace

I try to catch exception in server and print trace in console, but nothing happens

How can I get the stack trace when 500 server error happens?


Solution

  • Most of the time, a generic ExceptionMapper will do the trick.

    @Provider
    public class DebugMapper implements ExceptionMapper<Throwable> {
        @Override
        public Response toResponse(Throwable t) {
            t.printStackTrace();
            return Response.serverError()
                .entity(t.getMessage())
                .build();
        }
    }
    

    Then just register it

    ResourceConfig config = new ResourceConfig()
            .register(DebugMapper.class);
    

    Sometime the exception will get swallowed by Jersey when the exception is not mapped, and you will not see what happened. This usually works, when the problem is at the Jersey level.

    See also: