私は非常にシンプルなJAX-RSサービスで、私は認証のためにJDBCレルムでTomcatを使用していますので、私はJSR 250アノテーションを使っています。JAX-RS(ジャージー)と@RolesAllowedでのカスタムHTTPステータス応答
問題は、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ステータスレスポンスを構築するために(おそらく投げられる)例外を処理する方法はありますか?
完全な例:https://www.bhaveshthaker.com/25/customize-handling-server-side-exceptions-with-error-codes-using-exceptionmapper-with-jersey-jax-rs-in-java/ – RAS