这是关于在处理编组/解组继承类时JAXB编组的一个经典问题。通常的解决方案是使用@XmlSeeAlso
或使用JAXBContext.newInstance(child.class)
创建子类上下文。但在我们的例子中,我们正在处理插件类型体系结构(Java ServiceLoader),其中我们不知道在运行时加载哪个插件,但插件的请求消息扩展了常见的RequestMessage类和ResponseMessage类的响应消息。因此,在这种情况下使用@XmlSeeAlso
或新的上下文选项是不可行的,因为它会与正在创建和附加的插件相关联。
使用JAXB本身还有其他替代方案吗?或者我们是否必须使用任何其他JAXB替代品,如Xstream?
谢谢,
稻谷
答案 0 :(得分:0)
如果在创建JAXB上下文之前插件全部可用,则可以使用类路径扫描来发现直接或间接扩展RequestMessage
的类,并自动将它们包含在类列表中。