Java의 JAXB 구현에서 다음 클래스 구조를 마샬링하는 데 문제가 있습니다. 값이있는 추상 식별자 클래스가 있습니다.JAXB 및 다형성
값은 attribiute로 표시해야합니다. 이 유형의 AbstractID의 마샬 뭔가하려고하면
@XmlRootElement(name = "AbstractIDInt")
@XmlAccessorType(XmlAccessType.NONE)
public class AbstractIDInt extends AbstractID {
Integer value;
Integer getValue() {
return value;
}
public void setvalue (Integer value) {
this.value = value;
}
}
현재 자바의 JAXB 구현은 단지 예외가 발생합니다 :
@XmlSeeAlso({
AbstractIDInt.class
})
@XmlRootElement(name = "AbstractID")
@XmlAccessorType(XmlAccessType.PROPERTY)
public abstract class AbstractID {
@XmlAttribute
abstract Object getValue();
}
그리고, 여기에 추상적 인 ID 클래스를 확장하는 클래스입니다.
이것은 JAXB 표준에서 위반하고 있습니까? 아니면 JAXB의 Java 구현이 손상 되었습니까?
감사합니다. JavaID의 JAXB 구현을 위해 AbstractID에 주석을 달 수있는 방법은 무엇입니까? CXF를 통해 JAXB를 사용하여 WSDL을 생성합니다. getValue() 메소드로 AbstractID를 생성하기 위해 WSDL에서 생성 된 코드가 필요하다. – rouble
@prmatta - JAXB RI에서 작동하는 업데이트를 추가했습니다. –
이 문제는 생성 된 WSDL과 WSDL에서 생성 된 코드에서 AbstractID는 이제 빈 클래스가 될 것이고 AbstractIDInt는 "value"필드를 갖는다 고 생각합니다. 따라서 값을 얻으려는 사람은 먼저 AbstractIDInt로 형변환해야합니다. 이것은 파생 될 파생 된 유형을 알 수 없으므로 이상적이지 않습니다. 필드 "값"을 AbstractID에서 상속해야하는 방법이 필요합니다. 다른 아이디어? – rouble