私が気付いたように、myで、say ( )CXF JaxRS service
で例外をスローし、デフォルトを指定しない場合、返されるはずの応答を作成するように処理します。READ phase
IN interceptor
FaultOutInterceptor
XMLFaultOutInterceptor
(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
か?