java Cxf jaxrs:outFaultInterceptors无法修改消息
这是我的错误拦截器:
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等等
我想要返回的是一个响应对象,它有一个正确的HTTP响应代码和一个json主体(我在上面的响应变量中正确地包含了这个主体)
谢谢
# 1 楼答案
如果您使用的是JAX-RS,为什么不设置一个异常映射器,然后使用该映射器来处理响应呢
一个简单的例子:
然后,您需要通过添加以下内容在jaxrs服务中注册提供程序:
在服务器配置的上下文中。有了它,您就可以完全访问异常,并且可以从中获得您想要的任何东西