Sto cercando di gestire gli errori provenienti dal mio back-end. Il handleMessage()
viene chiamato se si verifica un errore ma il contenuto è un'istanza di XmlMessage. Vorrei cambiarlo alla mia risposta - basta impostare il codice di risposta e aggiungere un messaggio.Gestione degli errori con gli intercettori CXF - modifica del messaggio di risposta
non ho trovato alcuna documentazione adeguata, che potrebbe dirmi come fare questo ...
Questi axamples sono per il riposo, ma mi piacerebbe gestire questa cosa in SOAP troppo.
intercettore
public class ErrorHandlerInterceptor extends AbstractPhaseInterceptor<Message> {
public ErrorHandlerInterceptor() {
super(Phase.POST_LOGICAL);
}
@Override
public void handleMessage(Message message) throws Fault {
Response response = Response
.status(Response.Status.BAD_REQUEST)
.entity("HOW TO GET A MESSAGE FROM AN EXCEPTION IN HERE???")
.build();
message.getExchange().put(Response.class, response);
}
}
context.xml
<bean id="errorHandlerInterceptor"
class="cz.cvut.fit.wst.server.interceptor.ErrorHandlerInterceptor" />
<jaxrs:server address="/rest/">
<jaxrs:serviceBeans>
<ref bean="restService" />
</jaxrs:serviceBeans>
<jaxrs:outFaultInterceptors>
<ref bean="errorHandlerInterceptor" />
</jaxrs:outFaultInterceptors>
</jaxrs:server>
Grazie. Non accetto ancora la tua risposta per dividere la reputazione tra di voi due – user219882
@Tomas Mentre lo sforzo è nobile (sono contento di aver aiutato!), Che, purtroppo, [non è come funziona il sistema di taglie] (http://meta.stackexchange.com/questions/2786/accept-multiple-answers-or-split-bounty-among-several-users) ([dettagli] (http://meta.stackexchange.com/questions/16065/come-fa-il-bounty-sistema-lavoro/16067 # 16067)). Sono a disagio nel conciliare questo per te perché ho una partecipazione nel risultato, ma esiste l'opzione per concedere un premio aggiuntivo se ritieni che due risposte lo meritino. Scusa per il disturbo; Non ho scritto il sistema. :) – MrGomez
Oh, è un peccato. Ho deciso di fare questo: conferisco la generosità a mjwenk perché la reputazione lo aiuta più di te e accetta la tua risposta dato che hai link sia a REST che a SOAP. Immagino sia l'unico modo giusto (o almeno un po '). Grazie per averlo detto ... – user219882