【问题标题】:Regarding JAXB unmarshalling for inherited classes关于继承类的 JAXB 解组
【发布时间】:2015-05-11 13:21:21
【问题描述】:


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

还有其他使用 JAXB 本身的替代方案吗?还是我们必须使用任何其他 JAXB 替代品,例如 Xstream?

谢谢,
稻谷

【问题讨论】:

    标签: java xml inheritance jaxb


    【解决方案1】:

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

    【讨论】:

    • 嗨@四十二,问题是在服务器端(JBoss,RestEasy)检测到这些类,而插件架构在客户端,因此插件在服务器端不可用类路径,除非添加为运行时依赖项,这违背了拥有插件的目的。
    猜你喜欢
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    相关资源
    最近更新 更多