私が気付いたように、myで、say ( )CXF JaxRS serviceで例外をスローし、デフォルトを指定しない場合、返されるはずの応答を作成するように処理します。READ phaseIN interceptorFaultOutInterceptorXMLFaultOutInterceptor(which is always an XML)
ここで、サービスが要求された形式 (JSON や XML など) で応答を返すことができるようにしたいと考えています。
Web で次のようなものを見つけました。
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、少し迷ってしまいます。
を定義できるようにするための良い方法は何でしょうFaultOutInterceptorか?