2012-12-03 2 views
1

저는 Metro를 사용 해왔고 wsgen이 웹 메소드 응답 클래스에 추가 한 JAXB 주석을 무시하는 것으로 나타났습니다.wsgen이 JAXB 주석을 무시하지 못합니다.

웹 서비스를 통해 외부 클라이언트에 공개하려는 엔티티 클래스 집합을 반환하려고하지만 외부 클라이언트가 특정 클래스 특성 및 메서드를 볼 수 있도록하려는 경우 클래스 액세스를 설정해야합니다. 속성을 PROPERTY로 설정하고 XML 버전의 @XmlElement에 포함시키려는 모든 속성에 주석을 추가했습니다.

@XmlElement로 주석을 추가하지 않은 애트리뷰트 또는 메소드를 올바르게 무시하는 schemagen ant 태스크를 사용하여 엔티티 클래스의 XML 스키마를 만들 수 있습니다. 그러나 wsgen을 실행하여 웹 서비스의 wsdl을 만들면 엔티티 클래스 집합을 반환하는 메서드가 있으면 java.lang.NoClassDefFoundError가 발생합니다. 이는 wsgen이 수행해야하는 엔티티 클래스에 대한 공용 메소드를 무시하지 않고 예외로 참조 된 클래스가이 메소드에 대한 매개 변수이기 때문에 나타납니다.

@ XmlTransient로 메소드에 주석을 달아서 wsgen이 무시하지만 아무 소용이 없도록 노력했습니다. 누군가가 wsgen에 내 주석에주의를 기울여야한다고 제안 할 수 있다면 좋을 것입니다.

답변

0

주석 필드/속성은 접근 자 유형에 관계없이 항상 처리됩니다. 주석 필드/속성 만 매핑 된 것으로 처리하려면 @XmlAccessorType(XmlAccessType.NONE)을 지정해야합니다. 제안에 대한 추가 정보

+0

감사 블 레즈하지만 그때 여전히 wsgen의 실행 NONE에 접근 유형을 변경하는 경우에도위한 매개 변수 클래스에 대한 불만 무시해야하지만 어떤 이유에서나해야하는 방법입니다. 나는 약간의 혼동 스킴을 내 주석에주의를 기울이는 엔티티 클래스에 유효한 xml 스키마를 생성하지만, wsgen은 내 주석을 무시하는 것처럼 보이는 스키마를 생성하는 고유 한 메소드를 가져야한다. – user1872413

관련 문제