前提条件:CXFに基づくサービスは、XSD制限に違反するデータを含む要求/応答を受信します。CXFでアンマーシャリングエラーが発生した場合のフィールド名の取得方法は?
実際の挙動:
CVC-maxLengthの-有効: この場合には、CXFのようなメッセージで障害を返す長さ= '28' と値 'string_length_violated_valueは' に対してファセットは有効ではありませんmaxLengthの「13」型「XSDStringTypeWithLengthRestriction」
目標:無効なデータが含まれているフィールドの名前を消費者に 復帰の障害。 F.e.
プロバイダからの応答には無効なデータが含まれています。フィールド 'field_name'の値 'string_length_violated_value'は、maxLength '13'に対してファセット有効ではありません。
私はそれが可能かどうか、もしそうなら、このフィールド名(どこから検索する)を決定するのだろうか?
"不正な値"を除いて、問題の要素についてのヒントがなく、「無効な値」のアンマーシャリングエラーが発生する同様の問題が発生しました。私はXMLメッセージに何百もの要素を持っているので、乾草の中で針を探すのと同じです。この段階のための私の回避策は、各要素に一意の(偽の)値を提供することであり、要素(要素ではない)は報告されているので、正しい要素を指し示します。それは面倒で、それほどスマートではありません。 JAXB ValidationEventHandlerメソッドをもう少し試してみます。 – Withheld
こんにちはダニエル、私は詳細を覚えていないので、多くの時間が過ぎた、申し訳ありません。しかし、私が言うことができるのは、私たちの 'ValidationEventHandler'が機能しなかったことです。私たちが使ったcxfのバージョンはこれを無視していました。 これは悪い知らせですが、良いこともあります - カプセル化されたオブジェクトを掘り下げてcxf faultから "coordinate"(行と列番号)に関するデータを取得できました。これが私たちのソリューションでした。 – Milkywayfarer