JAXB неустрашимые проблемы - PullRequest
2 голосов
/ 08 ноября 2011

Проблема JAXB, связанная с наследованием:

  1. Я создаю веб-сервис, в котором в качестве параметра используется суперкласс.
  2. При вызове веб-сервиса клиент передает подкласс в качестве фактического параметра
  3. Сообщение SOAP, отправляемое на сервер, содержит xsi: type = "ns: subclass"

Вопрос: как демонтировать переданный параметр в суперкласс, но с сохранениемТип времени выполнения параметра как подкласса?

Я гуглил подобные вопросы по stackoverflow, но предложенные решения не работают для меня.

1 Ответ

1 голос
/ 09 ноября 2011

В этом случае вы должны убедиться, что JAXBContext знает обо всех подтипах. Вы можете сделать это, передав их при создании JAXBContext:

JAXBContext jc = JAXBContext.newInstance(Square.class, Circle.class);

Или используйте аннотацию @XmlSeeAlso для суперкласса, чтобы все подклассы вводились автоматически:

@XmlSeeAlso({Square.class, Circle.class)
public class Shape {
}

JAXBContext jc = JAXBContext.newInstance(Shape.class); 

Для получения дополнительной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...