서버 측에서 JAX-WS를 사용하여 웹 서비스 작업을 완료했습니다. 많은 도메인 객체에서 나는 JAXB를 사용하여 XML 파일의 서비스로의 비 정렬 화를 돕기 위해 @XmlRootElement
을 사용했다. 모든 것이 잘되었고 결과물은 SoapUI를 사용하여 보았을 것으로 예상됩니다.wsimport가 @XmlRootElement 주석을 갖는 서버 객체에 문제가있는 이유는 무엇입니까?
그러나 wsimport를 사용하여 클라이언트를 만들 때 (다른 개발자의 편리한 DAO로서) 클라이언트 통합 테스트 클래스에서 NullPointerExceptions가 발생하기 시작했습니다.
webservice에 대한 호출이 제대로 작동하고 응답이 클라이언트에 수신되었지만 더 복잡한 객체는 null입니다. String과 같은 단순한 속성은 사용 가능한 데이터로 가득 차 있지만 큰 객체는 반환하지 않았습니다.
간단한 문자열을 사용하여 서비스를 재생성하고 더 복잡한 개체로 마이그레이션하는 과정을 반복하면서 클라이언트가 @XmlRootElement
으로 서버에 선언 된 개체를 받았을 때 null 인 개체를 발견했습니다. 서버 오브젝트에 @XmlRootElement
주석이 없으면 클라이언트는 모든 복잡한 데이터를 수신했습니다.
초기에 @XmlRootElement
이 부족하면 서버의 데이터를 언 마샬링 할 때 적합했지만, this answer은 나를 도와주었습니다.
@XmlRootElement
어노테이션 (서버상의!) 때문에 웹 서비스 응답의 마샬링 해제시 wsimport 클라이언트가 자동으로 실패하는 현상이 걱정됩니다. 이 경우 나는 양측을 통제 할 수 있었고 그것에 대해 뭔가 할 수 있었다. 그러나 서버를 제어 할 수 없다면 어떻게 될까요? wsimport가 생성 한 코드로 어떻게 해결할 수 있습니까?