Apache CXF: как вернуть ответ о сбое от перехватчика - PullRequest
5 голосов
/ 31 января 2011

Я написал собственный перехватчик, который выполняет проверку некоторых параметров.Я хочу иметь возможность вернуть код ошибки и сериализовать JAXB-аннотированный класс в качестве тела ответа.

Если я выбрасываю исключение WebApplicationException, он не выполняет никакой специальной обработки для сериализации объекта Response внутри (что имеет смысл; я предполагаю, что это делается другим перехватчиком).

Как мне остановить цепочку перехватчиков, но при этом JAXB сериализует объект ответа?

1 Ответ

3 голосов
/ 01 февраля 2011

Ну, по крайней мере, в потоке перехватчика CXF JAX-RS, если вы установите:

message.getExchange().put(Response.class, response);

... тогда фактическая служба не вызывается, в то время как другие фазы все же запускаются. Не копался в коде CXF, чтобы увидеть, где сработает эта логика.

Итак, я построил такой ответ:

Response response = Response
    .status(Response.Status.FORBIDDEN)
    .entity(new ErrorEntity("This is a JAXB object with an error string"))
    .build();

У меня также есть некоторая настраиваемая аутентификация, выполняемая в фильтре CXF JAX-RS, и я хочу проверять параметры только тогда, когда аутентификация в порядке, поэтому я настроил класс перехватчика параметров для запуска во время фазы PRE_INVOKE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...