2
votes

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?

1
Does not need to be an exception at all. See what you are calling and what are the parameters when you do so. Then debug server code.Fildor
I've been trying to see the cause of the problem that way for a day. I need a trace. Server fail just in response "return MyObject"user2983041
Is it a production server or running in your development? Can you use a debugger and set breakpoints? Thing is: If it's not an exception, you won't get a trace ... if it is in fact an exception (that is swallowed but handled) you'll have to find where it is thrown to get it's trace. But if you have done that, you already know where to look ...Fildor
Does it only return 500 "Internal Server error" or is there a more sophisticated message? Can you raise loglevels to Debug or Trace?Fildor
It is a generic 500 internal server error. I can try with breakpoins.user2983041

1 Answers

6
votes

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: