HTTP 500 Internal Server Error in simple REST based program. Confused in GET and POST while receiving/sending response from server

Solution 1:

One way to debug things like this is to create a simple ExceptionMapper to catch exceptions that are not mapped. When there is no mapper, often the exception will bubble up to the container level, which just gives us generic 500 server error (which most of the time is of little help).

@Provider
public class DebugExceptionMapper implements ExceptionMapper<Exception> {

    @Override
    public Response toResponse(Exception exception) {
        exception.printStackTrace();
        return Response.serverError().entity(exception.getMessage()).build();
    } 
}

Then just register the mapper. When running a simple test with your ImageProgress class, when the exception is thrown, the stacktrace gets printed, and you can see the exception message

...ImageProgress does not have a no-arg default constructor

So just add a default (no-arg constructor) to the ImageProgress class. This is a requirement with JAXB models.