私はいくつかのWebサービスベースのアプリケーションに取り組んでおり、ApacheCXFのアンマーシャリングについて質問があります。私たちのプロジェクトでは、CXF2.4.1バージョンを使用しています。
一部のSOAP要求が正しくない場合(たとえば、一部のフィールドが数値ではなくテキストである場合)、CXFは標準のSOAPFaultExceptionをスローし、SOAP応答は次のような標準フィールドで構築されます。
<soap:Fault>
<faultcode>soap:Client</faultcode>
<faultstring>Unmarshalling Error: some field missing</faultstring>
</soap:Fault>
プロジェクトの要件によると、障害が発生した場合、システムは次のような他の形式で対応する必要があります。
<soap:body>
<ResponseState>
<ErrorCode>2732</ErrorCode>
<ErrorMessage>Unmarshalling Error: some field missing</ErrorMessage>
<ErrorDetails> some details </ErrorDetails>
<some other fields>
...
</ResponseState>
</soap:body>
したがって、問題は、このエラー処理をなんとかしてオーバーライドし、デフォルトではなく自分の形式で応答するにはどうすればよいかということです。
前もって感謝します。
PSいくつかのValidationEventHandlerプリンシパルを調べようとしましたが、CXF2.0以降では他の方法で機能します。