このスレッドRegistering a custom ResourceMethodInvocationHandler in Jerseyに基づいて、JSON をアンマーシャリングした後、Jersey リソース メソッド呼び出しをインターセプトすることができました。
しかし、メソッドを呼び出す前に、MyInvocationHandler で何らかのロジック (例: 禁止された例外) に基づいてカスタム例外をスローするにはどうすればよいですか。これを行うと、500 エラーが発生しますjavax.servlet.ServletException
。
public class MyIncovationHandler implements InvocationHandler {
@Override
public Object invoke(Object obj, Method method, Object[] args)
throws Throwable {
if(!verifyAccess(args)) {
throw new ForbiddenException();
}
Object result = method.invoke(obj, args);
return result;
}
}
403 禁止の代わりに 500 エラー コードでエラーを下回る
javax.servlet.ServletException: javax.ws.rs.ProcessingException: javax.ws.rs.ProcessingException: javax.ws.rs.ProcessingException: javax.ws.rs.ForbiddenException: HTTP 403 Forbidden
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:421)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:386)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:335)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:222)