После нескольких часов попыток и ошибок я хочу спросить здесь, может ли кто-нибудь помочь мне решить мою проблему.JAXB не сортирует, как ожидалось. Объект (суперкласс) whitin DTO пуст
Сценарий:
- Java EE сервер (JBoss 7.2) с Apache CXF как реализации JAX-WS.
- ServiceA (служебная конечная точка) и ServiceB (расширяет сервис A, а также конечную точку обслуживания)
- Три проекта сохранения: общий, персистенцияA зависит от общего, PersistenceB зависит от PersistenceA.
- Существует класс
UUIDIdentified
, который суперкласс всех настойчивости классов (Это обеспечивает JPA@ID
) он находится в Projekt Common
В классе ServiceA является метод: public List<DTO> getData(UUIDIdentified value);
Сервер читает некоторые Объекты, все подтипы UUIDIdentified, и цель состоит в том, чтобы упаковать объекты в DTO.
DTO будет выглядеть следующим образом:
@XmlAccessorType(XmlAccessType.FIELD)
public class DTO{
private static final long serialVersionUID = 1L;
@XmlElement(name = "uuididentified")
UUIDIdentified object;
public UUIDIdentified getObject() {
return object;
}
public void setObject(final UUIDIdentified object) {
this.object = object;
}
}
Если я смотрю в ответ SOAP, я вижу, что нет данных в <uuididentified>
тега. Мое понимание JAXB не так хорошо, но, как я понимаю, «реальные» экземпляры UUIDIdentified и их типы неизвестны JAXBContext.
Я мог бы решить эту проблему, добавив @XmlSeeAlso({TypeA.class,TypeB.class})
в класс UUIDIdentified
(я считаю). Но это то, что я не могу, потому что, если бы я это сделал, Project Common будет зависеть от проектов PersistenceA/B.
Как я могу это решить. Как я могу сказать JAXB (может быть, в файле конфигурации xml), что он должен добавить ClassA/B в JAXBContext, поскольку он добавляет UUIDIdentified?
Я пробовал некоторые вещи, такие как файлы jaxb.index, ObjectFactorys, @XmlSeeAlso в SEI, но я не знаю, правильно ли это.