Я пытаюсь обработать ошибки, исходящие от моего бэкенда. handleMessage()
вызывается, если возникает ошибка, но содержимое является экземпляром XmlMessage. Я хотел бы изменить его на свой собственный ответ -, просто установить код ответа и добавить сообщение.
Я не нашел подходящей документации, которая могла бы рассказать мне, как это сделать...
Эти примеры предназначены для REST, но я хотел бы также управлять этим в SOAP.
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>