2011-05-03 5 views
2

웹 서비스를 사용하는 Java 웹 서비스 클라이언트가 있습니다. 클라이언트는 WSDL2Java 도구를 사용하여 생성됩니다. 웹 서비스 공급자가 스키마 객체 중 하나를 필요하지 않은 필드를 추가하여 변경할 때까지 모두 올바르게 작동합니다. 웹 서비스가 호출되면 응답은 이러한 스키마 객체의 배열을 반환하고 반환 된 객체에는 추가 필드가 있으므로 모든 것이 중단됩니다. 내가 이해 한 바로는 클라이언트 응용 프로그램을 손상시키지 않고 그러한 변경을 허용하는 방법이 있습니다.
해결 방법에 대한 올바른 방향을 제시해 주시겠습니까? 제안 사항에 감사드립니다. 고맙습니다. 나디아클라이언트의 앱에서 WSDL을 분리하십시오.

+1

Welcome to StackOverflow. Java에 대한 질문을하기에 좋은 곳입니다. 자바에 대한 자바 질문에 태그를 추가하면 더 많은 사람들이 볼 수 있습니다. 당신을 위해 그것을 고정. 이것을 보는 사람들이 많아 질수록 도움을받을 가능성이 커집니다. –

+0

워렌 고맙습니다. – Nadia

답변

1

웹 서비스가 WSDL을 따르지 않습니다? WSDL을 편집하여 불필요한 필드를 추가 할 수 있습니다.

WSDL이 변경 되었습니까? WSDL이 변경된 경우 WSDL2Java 도구로 코드를 다시 생성해야합니다.

+0

예, WSDL이 변경되었으며 다시 발생할 수 있습니다. 내 클라이언트가 WSDL 변경 사항을 무시할 수있게하고 싶습니다. 가능합니까? – Nadia

1

이 문제는 일반적으로 해결하기 어렵습니다. 따라서 클라이언트 측 XML 스키마가 자주 변경되어서는 안됩니다. 스키마 유효성 검사를 비활성화 할 수는 있지만 스키마가 너무 많이 변경되면 클라이언트 응용 프로그램이 계속 파괴됩니다.

(전문 용어로 '느슨한 결합'에서)이 작업을 수행하는 데 권장되는 방법은 도메인 객체의 별도 레이어를 생성하고 생성 된 Java 클래스와 도메인 객체를 매핑하는 것입니다. 스키마가 변경되면 매핑을 업데이트하기 만하면됩니다. 스키마 변경은 응용 프로그램의 레이어에 너무 많이 삽입되어서는 안됩니다. 그러나 스키마가 변경 될 때마다 여전히 응용 프로그램을 다시 컴파일해야합니다.

+0

감사합니다. 스키마 유효성 검사를 확인해 보겠습니다. 그렇지만 WSDL 변경 사항에 대해 더 독립적 인 방법이 없습니까? – Nadia

+0

Hmmm .... 도메인 객체의 레이어를 추가하는지 여부에 관계없이 객체가 WSDL 변경으로 변경되어야합니다. 변경 사항을 수용하거나 "무시"하는 완벽한 방법이 없습니다. 느슨한 커플 링은 여전히 ​​변경을 요구하고 다시 컴파일합니다. 응답 해 주셔서 감사합니다! – Nadia

2

클라이언트에 다른 바인딩 옵션을 사용해보십시오. JAXBRI (od JiBX)를 잘못 사용하면 문제가 해결됩니다. 시도해보십시오 WSDL2Java -d jaxbri 기본값은 adb입니다. 자세한 정보는 here입니다.

관련 문제