首先是一個小例子。 ReferencingEntity類保存對抽象類AbstractEntity的引用。有兩種實現FO此類:使用XmlIDRef參考抽象類
@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;
}
是沒有問題的編組ReferencingEntity的一個實例(但該具體類型不存在於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'? –
我更新了一些更多細節。 –