2010-06-24 3 views
7

예외 예외가있는 각 Exception에 대해 XmlJavaTypeAdapter이 정의되어 있습니다. 나는 다음과 같이 예외를 마샬링에 대한 래퍼 객체를 사용 : -@XmlJavaTypeAdapter/상속

@XmlRootElement 
public Wrapper<T extends BaseException> { 
    T exception; 
} 

예외를 : -

@XmlJavaTypeAdapter(BaseExceptionAdapter.class) { 
public class BaseException extends RuntimeException { 
} 


@XmlJavaTypeAdapter(DerivedExceptionAdapter.class) { 
public class DerivedException extends BaseException { 
} 

나는 래퍼 개체를 마샬링하려고 기본적으로 JAXB는 항상 BaseExceptionAdapter도 실제 경우를 호출 예외는 DerivedException입니다. 어떻게 참조 유형이 아닌 예외의 인스턴스 유형을 찾도록 강제 할 수 있습니까?

그냥 추가하려면 package-info/jaxb.index 등을 제외합니다.

답변

0

모든 예외 하위 유형이 package-info/jaxb.index/newInitialContext (...)에 나열되어 있습니까?

JAX-B는 인스턴스 유형을 살펴 보겠지만 하위 유형을 JAX-B에 등록해야한다고 생각합니다. 런타임시 XMLJavaTypeAdapter 주석을 발견하지는 않습니다. JaxB를 사용하여 각 하위 클래스를 명시 적으로 등록해야합니다.

JAX-B에 등록 된 클래스의 @XmlSeeAlso 주석을 사용하여 수행 할 수도 있습니다.

1

T 필드에 @XmlElementRef가 있어야 JAXB가이를 동적으로 볼 수있는 것처럼 보입니다.