通过我非常简单的 JAX-RS 服务,我使用带有 JDBC 领域的 Tomcat 进行身份验证,因此我正在使用 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 状态响应?