Я использую CXF для веб-сервисов.
Из-за некоторых клиентских ограничений мне нужно, чтобы все веб-ошибки возвращали код 200 вместо 500.
Я пытался использовать перехватчики, в зависимости от фазы, на которой я смог либо переопределить статус, и затем ответ пуст, либо ответ заполнен ошибкой, но затем статус не переопределяется.
Есть идеи как это сделать?
Используя перехватчики, что будет правильным этапом?
Я зарегистрировал перехватчик так:
@org.apache.cxf.interceptor.OutFaultInterceptors(interceptors = { "com.my.prod.core.service.itercept.HttpStatusInterceptor" })
и это перехватчик:
public class HttpStatusInterceptor extends AbstractSoapInterceptor {
public HttpStatusInterceptor(){
super(Phase.POST_STREAM_ENDING);
}
@Override public void handleMessage(org.apache.cxf.binding.soap.SoapMessage msg) throws org.apache.cxf.interceptor.Fault{
msg.put(SoapMessage.RESPONSE_CODE, "200");
}}