переопределить статус http с помощью cxf - PullRequest
2 голосов
/ 23 июля 2011

Я использую 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");
}}

1 Ответ

2 голосов
/ 23 июля 2011

Можете ли вы попробовать

msg.put(SoapMessage.RESPONSE_CODE, 200);

, поэтому он заканчивается как объект типа Integer, а не как String. Я думаю, что он ожидает целое число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...