Ich versuche, Fehler aus meinem Backend zu behandeln. Die handleMessage()
wird aufgerufen, wenn ein Fehler auftritt, aber der Inhalt ist eine Instanz von XmlMessage. Ich möchte es zu meiner eigenen Antwort ändern - einfach den Antwortcode einstellen und eine Nachricht hinzufügen.Fehlerbehandlung mit CXF-Interceptors - Ändern der Antwortnachricht
Ich habe keine ordnungsgemäße Dokumentation gefunden, die mir sagen, wie dies zu tun ...
Diese axamples sind für REST, aber ich möchte auch diese Sache in SOAP verwalten.
Interceptor
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>
Danke. Ich akzeptiere deine Antwort noch nicht, um den Ruf zwischen euch beiden zu teilen – user219882
@Tomas Während die Anstrengung edel ist (ich bin froh, dass ich geholfen habe!), Das, leider, [funktioniert nicht das Kopfgeldsystem] (http://meta.stackexchange.com/questions/2786/accept-multiple-answers-or-split-bounty-among-several-users) ([details] (http://meta.stackexchange.com/questions/16065)/how-does-the-bounty-System-Arbeit/16067 # 16067)). Es ist mir unbehaglich, dies für Sie in Einklang zu bringen, weil ich am Ergebnis beteiligt bin, aber es besteht die Möglichkeit, ein zusätzliches Kopfgeld zu gewähren, wenn Sie zwei Antworten dafür verdienen. Entschuldigen Sie die Umstände; Ich habe das System nicht geschrieben. :) – MrGomez
Oh, das ist schade. Ich entschied mich, dies zu tun: Ich gebe mjwenk das Kopfgeld, weil der Ruf ihm mehr hilft als du und akzeptiere deine Antwort, da du Links zu REST und SOAP hast. Ich denke, es ist der einzige faire Weg (oder zumindest ein bisschen). Danke für das Erwähnen ... – user219882