这是我的故障拦截器:
public class OutFaultInterceptor extends AbstractPhaseInterceptor<Message> {
public OutFaultInterceptor() {
super(Phase.SEND);
}
@Override
public void handleMessage(Message message) throws Fault
{
Fault fault = (Fault)message.getContent(Exception.class);
Throwable ex = fault.getCause();
Response response = JAXRSUtils.convertFaultToResponse(ex, message);
message.setContent(Response.class, response);
}
}
这是我的相关 cxf 配置:
<jaxrs:outFaultInterceptors>
<bean id="outfault" class="com.xxx.OutFaultInterceptor"/>
</jaxrs:outFaultInterceptors>
我可以进入 handleMessage 方法没问题,但我无法修改消息。
目前它返回的是默认值:ns1:XMLFault blah blah ...
我要返回的是一个 Response 对象,它有一个正确的 HTTP 响应代码和一个 json 主体(我在上面的响应变量中正确地拥有)。
谢谢