【发布时间】:2012-08-24 14:55:27
【问题描述】:
首先是一个小例子。类 ReferencingEntity 持有对抽象类 AbstractEntity 的引用。这个类有两种实现:
@XmlRootElement
public abstract class AbstractEntity {
@XmlID
private String id;
}
@XmlRootElement
public class EntityImpl1 extends AbstractEntity {
}
@XmlRootElement
public class EntityImpl2 extends AbstractEntity {
}
@XmlRootElement
public class ReferencingEntity {
@XmlIDREF
private AbstractEntity entity;
}
编组引用实体的实例没有问题(除了具体类型不存在于 xml 中),但在尝试解组 xml 表示时,缺少描述符以确定具体实现。
目前我正在使用 XmlAdapter 将所有非 id 字段设置为 null,但如果可能,最好使用 @XmlID。有什么想法吗?
更新: 我在 JBoss 6.1.0.Final 中使用 RESTEasy,提供程序创建上下文如下:
ContextResolver<JAXBContextFinder> resolver = providers.getContextResolver(JAXBContextFinder.class, mediaType);
JAXBContextFinder finder = resolver.getContext(type);
if (finder == null)
{
if (reader) throw new JAXBUnmarshalException("Could not find JAXBContextFinder for media type: " + mediaType);
else throw new JAXBMarshalException("Could not find JAXBContextFinder for media type: " + mediaType);
}
JAXBContext context = finder.findCachedContext(type, mediaType, annotations);
【问题讨论】:
-
你是如何创建你的
JAXBContext的? -
我更新了我的帖子,提供了更多细节。
标签: jaxb eclipselink moxy