При запуске простого интерфейса REST с Eclipse с использованием зависимости jersey-container-grizzly2-http
Maven версии 2.13 я не получаю никаких исключений, отображаемых после запуска ошибок в браузере. Другие выходные данные журнала отображаются в консоли просто отлично, но исключения просто проглатываются.
Я создал обработчик исключений, который не создается и не вызывается:
package mypackage.rest;
@Provider
class ExceptionHandler implements ExceptionMapper<Throwable>
{
@Override public Response toResponse(Throwable t)
{
System.out.println("toResponse called");
t.printStackTrace();
return Response.status(Status.BAD_REQUEST).entity(t.getMessage()).build();
}
}
Конструкция сервера Grizzly:
package mypackage.rest;
public class GrizzlyHttpUtil
{
public static final URI baseURI = UriBuilder.fromUri("http://localhost/").port(10010).build();
public static HttpServer startThisServer()
{
ResourceConfig resCon = new ResourceConfig().packages("mypackage.rest");
return server = GrizzlyHttpServerFactory.createHttpServer(baseURI, resCon);
}
}
Класс REST API
package mypackage.rest;
@Path("")
public class Rest
{
@GET @Path("datasets") @Produces(MediaType.TEXT_HTML)
public static String datasets()
{
throw new RuntimeException();
}
}
Обновление У меня получилось работать с resCon.register(ExceptionHandler.class);
. Почему это необходимо? Почему ResourceConfig().packages(...) не справляется с этим самостоятельно?