erança @JAXB, desenfreada da subclasse da classe empacotada

Estou usando o JAXB para ler e escrever XML. O que eu quero é usar uma classe JAXB base para marshalling e uma classe JAXB herdada para desserialização. Isso permite que um aplicativo Java remetente envie XML para outro aplicativo Java receptor. O remetente e o destinatário compartilharão uma biblioteca JAXB comum. Eu quero que o receptor desmarque o XML em uma classe JAXB específica do receptor que estenda a classe JAXB genéric

Exemplo

Esta é a classe JAXB comum usada pelo remetent

@XmlRootElement(name="person")
public class Person {
    public String name;
    public int age;
}

Esta é a classe JAXB específica do receptor usada ao desarmar o XML. A classe do receptor possui lógica específica para o aplicativo recepto

@XmlRootElement(name="person")
public class ReceiverPerson extends Person {
    public doReceiverSpecificStuff() ...
}

Marshalling funciona como esperado. O problema está no cancelamento da matrícula, ainda assim, o cancelamento paraPerson apesar do JAXBContext usar o nome do pacote da subclasseReceiverPerson.

JAXBContext jaxbContext = JAXBContext.newInstance(package name of ReceiverPerson);

O que eu quero é desassociarReceiverPerson. A única maneira de fazer isso é remover@XmlRootElement a partir dePerson. Infelizmente, isso impedePerson de ser empacotado. É como se o JAXB iniciasse na classe base e descesse até encontrar o primeiro@XmlRootElement com o nome apropriado. Eu tentei adicionar umcreatePerson() método que retornaReceiverPerson paraObjectFactory mas isso não ajuda.

questionAnswers(7)

yourAnswerToTheQuestion