Propagate Ausnahme vom CXF-Interceptor zum Ausnahme-Mapper

Ich habe einen Flow, in dem ich auf dem CXF-Client einen Jaxrs-in-Interceptor, einen Provider und einen Exception Mapper habe. In meinem Fall bekomme ich durch In-Interceptor eine schlechte Antwort vom Client und möchte dann die CXF-Buskette abbrechen und einen Fehler auslösen. Leider konnte ich das nicht tun, da in jeder Situation die vom Interceptor ausgelöste Ausnahme nur protokolliert wird, aber der Hauptfehler (falsches JSON-Format) an den Exception Mapper weitergegeben wird. Ich möchte Exception Mapper vermeiden, weiß aber nicht wie. Ich verwende WebClient, um Interceptors wie folgt zu implementieren:

@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());
            }
        } 

Ich habe gelesen, dass ich jaxrs-filter implementieren soll, da Ausnahmen, die vom Interceptor ausgelöst werden, nicht an den Exception Mapper weitergegeben werden. Ist dies in Java dank der WebClient-Implementierung in irgendeiner Weise möglich?

S client = create(url, clazz, list(jsonProvider(), providers));
WebClient.getConfig(client).getInInterceptors().add(new MyInterceptor());

Ich habe auch versucht, verschiedene Phasen auf Interceptor anzuwenden, aber es hat auch nicht funktioniert.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage