#native #quarkus #graalvm
#родной #кваркус #graalvm
Вопрос:
Я работаю над приложением с quarkus и пытаюсь создать ExceptionMapper, чтобы избавиться от ошибок HTML при вызове служб rest. Это нормально работает в режиме разработки или в fat jars, но не в собственном режиме:
Это мой картограф исключений
@Provider
//@RegisterForReflection -> even with this it doesn't work
public class DefaultErrorMapper implements ExceptionMapper<Exception> {
@Override
public Response toResponse(Exception exception) {
int code = 500;
if (exception instanceof WebApplicationException) {
code = ((WebApplicationException) exception).getResponse().getStatus();
}
exception.printStackTrace();
return Response.status(code)
.entity(Json.createObjectBuilder().add("error", "unknown exception").add("code", code).build())
.build();
}
}
Это моя служба ресурсов
@POST
@Transactional
public Response addMyEntity(MyEntity myEntity) {
try {
service.addMyEntity(myEntity);
return Response.ok().build();
} catch (FormularioInvalidoException e) {
return Response.status(Status.BAD_REQUEST).entity(e.getMessage()).build();
} catch (Exception e) {
return Response.status(Status.INTERNAL_SERVER_ERROR).entity("Unknown error").build();
}
}
Когда я вызываю POST в режиме разработки или из fat jar, созданного с помощью «./mvnw package -Dquarkus.package.type=uber-jar» и выдает ошибку, она работает нормально и показывает следующее
{
"error": {
"chars": "Unknown error",
"string": "Unknown error",
"valueType": "STRING"
},
"code": {
"integral": true,
"valueType": "NUMBER"
}
}
Но при запуске в собственном режиме
<html lang="en">
<head>
<title>Internal Server Error - Error id c81bed52-1d75-46e9-917d-310dda5d3212-2</title>
<meta charset="utf-8">
... more html ...
Поэтому мне нужно получать ответ об ошибке вместо HTML в собственном режиме всякий раз, когда возникает ошибка. Есть ли что-то еще, что я должен настроить?
Спасибо!
Комментарии:
1. Странно, я пробовал в одном из своих проектов и, похоже, работает. Можете ли вы открыть проблему с репродуктором в github.com/quarkusio/quarkus/issues ? Спасибо!