С моей очень простой службой JAX-RS я использую Tomcat с областью JDBC для аутентификации, поэтому я работаю над аннотациями JSR 250.
Дело в том, что я хочу вернуть тело пользовательского сообщения в ответе статуса HTTP. Код состояния (403) должен оставаться неизменным. Например, моя служба выглядит следующим образом:
@RolesAllowed({ "ADMIN" })
@Path("/users")
public class UsersService {
@GET
@Produces(MediaType.TEXT_PLAIN)
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public String getUsers() {
// get users ...
return ...;
}
}
Если пользователь с другой ролью, чем "ADMIN", обращается к службе, я хочу изменить ответное сообщение на что-то подобное (в зависимости от типа носителя [xml/json]):
<error id="100">
<message>Not allowed.</message>
</error>
В настоящий момент Джерси возвращает следующее тело:
HTTP Status 403 - Forbidden
type Status report
message Forbidden
description Access to the specified resource (Forbidden) has been forbidden.
Apache Tomcat/7.0.12
Как я могу изменить тело сообщения по умолчанию? Есть ли способ обработать исключение (возможно, брошенное) для создания моего собственного ответа HTTP-статуса?