正如我所注意到的,在我的 中,如果我在 say ( )CXF JaxRS service
中抛出异常并且不提供任何默认值,则将负责构建应返回的响应。READ phase
IN interceptor
FaultOutInterceptor
XMLFaultOutInterceptor
(which is always an XML)
现在,我希望能够以请求服务的格式返回响应:JSON 或 XML 或其他。
我在网上找到了这样的东西:
public class JsonFaultOutHandlerInterceptor extends JAXRSOutInterceptor
{
public JsonFaultOutHandlerInterceptor() {
getBefore().add(LoggingOutInterceptor.class.getName());
}
@Override
public void handleMessage(Message message) {
...
message.getInterceptorChain().abort();
}
}
我已经在 中配置了它outInterceptor
,我应该有条件地中止(如果请求类型是application/Json
)还是不中止(如果请求类型是application/xml
)拦截器链?(我不确定请求类型信息是否已经可用。此外,不知何故,中止链似乎不太正确)
如果响应达到JAXRS filters
,使用ExceptionMapper<T>
我会很好地处理响应。但是当出现异常时INinterceptor
,我有点失落。
什么是能够定义 a 的好方法FaultOutInterceptor
?