Java 关于继承类的JAXB解组

Java 关于继承类的JAXB解组,java,xml,inheritance,jaxb,Java,Xml,Inheritance,Jaxb,这是关于处理继承类的编组/解编组时JAXB编组的经典问题之一。通常的解决方案是使用@xmlseea或使用JAXBContext.newInstance(child.class)创建子类上下文。但是在我们的例子中,我们处理的是一个插件类型的架构(Java ServiceLoader),其中我们不知道在运行时加载哪个插件,但是插件的请求消息扩展了公共RequestMessage类,响应消息扩展了ResponseMessage类。因此,在这种情况下,使用@xmlseea或新上下文选项都是不可行的,因为


这是关于处理继承类的编组/解编组时JAXB编组的经典问题之一。通常的解决方案是使用
@xmlseea
或使用
JAXBContext.newInstance(child.class)
创建子类上下文。但是在我们的例子中,我们处理的是一个插件类型的架构(Java ServiceLoader),其中我们不知道在运行时加载哪个插件,但是插件的请求消息扩展了公共RequestMessage类,响应消息扩展了ResponseMessage类。因此,在这种情况下,使用
@xmlseea
或新上下文选项都是不可行的,因为它会与正在创建和附加的插件相关联

使用JAXB本身还有其他选择吗?或者我们必须使用其他JAXB替代方案,比如Xstream吗

谢谢,

Paddy

如果在创建JAXB上下文之前插件都可用,那么可以使用类路径扫描来发现直接或间接扩展
RequestMessage
的类,并自动将它们包含在类列表中。

Hi@四十二,问题是在服务器端检测到这些类(JBoss,RestEasy)虽然插件体系结构位于客户端,但除非作为运行时依赖项添加,否则插件在服务器的类路径中不可用,这与拥有插件的目的背道而驰。