Propagar exceção do interceptador CXF para o mapeador de exceções
Eu tenho um fluxo em que no cliente CXF eu tenho jaxrs-in-interceptor, provedor e mapeador de exceções. No meu caso, estou recebendo uma resposta ruim do cliente através do interceptador e, em seguida, gostaria de abortar a cadeia de ônibus cxf e lançar uma falha. Infelizmente, não consegui fazer isso, porque em todas as situações a exceção lançada pelo interceptador está sendo registrada apenas, mas o erro principal (formato json errado) é propagado para o mapeador de exceções. Gostaria de evitar o mapeador de exceções, mas não sei como. Estou usando o WebClient para implementar interceptores como este:
@Component
public class MyInterceptor extends AbstractPhaseInterceptor<Message> {
public MyInterceptor() {
super(POST_STREAM);
}
@Override
public void handleMessage(Message message) throws Fault {
if (message != null) {
//message.getExchange().setOneWay(true);
//message.getExchange().put(Exception.class, new MyException());
//message.getInterceptorChain().abort();
//message.setContent(Exception.class, new MyException());
//Endpoint ep = message.getExchange().get(Endpoint.class);
//message.getInterceptorChain().abort();
//if (ep.getInFaultObserver() != null) {
// ep.getInFaultObserver().onMessage(message);
//}
//throw new WebApplicationException( new MyException());
//message.setContent(Response.class, response);
throw new Fault(new MyException());
}
}
Eu li que eu deveria implementar o filtro jaxrs, pois as exceções lançadas pelo interceptor não são propagadas para o mapeador de exceções. Existe alguma maneira de fazer isso em java, graças à implementação do WebClient?
S client = create(url, clazz, list(jsonProvider(), providers));
WebClient.getConfig(client).getInInterceptors().add(new MyInterceptor());
Eu também tentei usar fases diferentes no interceptador, mas também não funcionou.