2013-07-22 6 views
0

내 응용 프로그램은 클라이언트 제공 WSDL에서 Java 클래스를 생성하기 위해 CXF WSDL2JAVA를 사용했습니다.CXF - webservice 끝점이 변경되었습니다. WSDL이 없습니다.

이제 응답에 3 개의 문자열 필드가 추가되도록 웹 서비스가 변경되었습니다. 우리가 자바 클래스를 다시 생성하는 것은 재 작업을 조금 겠지만, 우리는 예외가 있어요 :

javax.xml.ws.soap.SOAPFaultException : 비 정렬 화 오류 : 예기치 않은 요소 (newElement)

을 CXF가 응답의 추가 요소를 무시하도록하는 방법이 있습니까?

답변

1

당신의 엔드 포인트 속성을 추가하는 경우 :

"설정 JAXB - 검증 이벤트 핸들러를"

다음 CXF는 JAXB의 Unmarshaller에와 예기치에 이벤트 핸들러를 추가하지 않습니다 "거짓"으로 요소는 자동으로 무시됩니다. 메시지의 나머지 부분이 정확하게 정확한지 확인해야합니다. 그래도 메시지가 정확하지 않으면 오류가 발생하지 않거나 아무 것도 표시되지 않습니다. 예를 들어, JAXB가 규정되지 않은 요소를 예상 할 때 누군가가 정규 요소를 전송한다는 공통점이 있습니다. 핸들러를 설정하지 않으면 객체의 모든 필드가 "null"로 끝납니다. 핸들러를 사용하면 다음과 같은 메시지가 표시됩니다.

unexpected element (uri:" http://my.namespace.com ", local:"myField"). Expected elements are <{}myField>

따라서 네임 스페이스 자격이 그 이유입니다.

+0

나는 이것을 직면하고있다. Gribbler, 유효성을 검사 할 때 JAXB에 네임 스페이스를 추가하는 방법이 있습니까? 왜냐하면이 설정을 false로 설정했기 때문에 유효성 검사를 건너 뛰었습니다. 객체가 null로 설정되지 않아 작동하지 않습니다. – ronnyfm