2011-07-23 54 views
1

我正在使用CXF进行Web服务。 由于某些客户端的限制,我需要所有web故障返回代码200而不是500. 我试图使用拦截器,取决于阶段我能够覆盖状态,然后响应为空或响应已满与错误,但然后状态不会被覆盖。 任何想法如何做到这一点? 使用拦截器,什么是正确的阶段? 我注册这样的拦截器:用cxf覆盖http状态

@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

你可以尝试

msg.put(SoapMessage.RESPONSE_CODE, 200); 

所以它最终成为和Integer对象,而不是一个String 。我认为它期待整数。

+0

我确实得到了响应代码200,但响应本身是空的 – FelixDox

+0

是的!小信仰的人,我..工作。 – FelixDox

+0

现在..是否有可能将此拦截器注册到所有端点? – FelixDox