私の非常に単純な 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>
現時点で、Jersey は次のボディを返します。
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 ステータス応答を作成する方法はありますか?