Ну, по крайней мере, в потоке перехватчика 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
.