Gestion des erreurs avec CXF intercepteurs - changer le message de réponse

Je suis en train de gérer les erreurs provenant de mon backend. Le handleMessage() est appelée si une erreur se produit, mais le contenu est une instance de XmlMessage. Je voudrais le changer de mon propre réponse - il suffit de régler le code de réponse et ajouter un peu de message.

Je n'ai pas trouvé de documents appropriés qui pourrait me dire comment faire cela...

Ces axamples sont pour le REPOS mais j'aimerais gérer cette chose dans la fabrication de SAVON.

intercepteur

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>

OriginalL'auteur user219882 | 2012-04-08