Бросьте исключение в Джерси. ResourceMethodInvocationHandlerProvider

Основываясь на этом потоке, зарегистрировав собственный пользовательский ресурс ResourceMethodInvocationHandler в Джерси, я смог перехватить вызовы метода ресурсов Джерси после демаршаллинга JSON.

Но как мне вызвать пользовательское исключение, основанное на некоторой логике (например, запрещенное исключение) в 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;
    }
} 

Получение ошибки ниже с кодом ошибки 500 вместо 403 запрещено

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)

0 ответов

Другие вопросы по тегам