사전 조건 : CXF를 기반으로하는 서비스는 XSD 제한을 위반하는 데이터와 함께 요청/응답을받습니다.CXF에서 언 마샬링 오류가 발생한 경우 필드 이름을 검색하는 방법은 무엇입니까?
실제 동작 :
CVC-최대 길이 무효 : 이 경우는 CXF 같은 메시지가 오류를 반환 길이 = '28'과 값 'string_length_violated_value은'에 대한 패싯 - 유효하지 최대 길이 '13'유형 'XSDStringTypeWithLengthRestriction'
목표 : 유효하지 않은 데이터를 포함하는 필드의 이름으로 소비자에게 반환 오류. F.e. 다음과 같이 입력하십시오 :
응답에서 잘못된 데이터가 포함되어 있습니다. 'field_name'필드의 'string_length_violated_value'값이 maxLength '13'과 관련하여면 유효하지 않습니다.
나는 가능한지, 그렇다면이 필드 이름을 어디에서 가져올지를 결정하는 방법이 궁금합니다.
방금 "비슷한 값이 아닙니다."Unmarshalling Error가 발생하지만 문제의 요소에 대한 힌트가없는 유사한 문제가 발생했습니다. "문제가되는 값"은 예외입니다. XML 메시지에 수백 가지 요소가 있기 때문에 건초 더미에서 바늘을 찾는 것과 같습니다. 이 단계의 해결 방법은 각 요소에 대해 고유 한 (가짜) 값을 제공하는 것이고 값 (요소는 제외)이보고되므로 올바른 요소를 나타냅니다. 지루하고 똑똑하지는 않습니다. 좀 더 시간이 지나면'JAXB ValidationEventHandler' 기술을 시도 할 것입니다. – Withheld
안녕하세요 다니엘, 많은 시간이 지났으므로 상세한 것은 기억하지 못합니다. 죄송합니다. 하지만 내가 말할 수있는 것은 - ValidationEventHandler가 작동하지 않는다는 것입니다. 우리가 사용한 cxf의 버전은 이것을 무시했습니다. 이것은 나쁜 소식이지만 좋은 점도 있습니다. 캡슐화 된 객체를 파헤쳐 cxf 오류에서 "좌표"(행 및 열 번호)에 대한 데이터를 얻을 수있었습니다. 이것이 우리의 해결책이었습니다. – Milkywayfarer