【问题标题】:JAXBContext, jaxb.properties and moxyJAXBContext、jaxb.properties 和 moxy
【发布时间】:2012-07-31 21:37:57
【问题描述】:

jaxb.properties 需要与您在其上创建 JAXBContext 的域类位于同一包中

我正在使用 Moxy 的 xml 驱动配置,因为我不想使用注释或 XJC 生成的对象。我有一个现有的域类,它们分布在多个包中。这是否意味着我需要在所有这些包中包含jaxb.properties,或者有更好的选择(也许我自己编写了一些可以从 jvm arg 读取的接口的实现)?

【问题讨论】:

    标签: jaxb eclipselink moxy


    【解决方案1】:

    这是否意味着我需要所有的 jaxb.properties 那些包?

    如果您在类上创建JAXBContext,那么您需要在传入的域类的至少一个包中包含一个jaxb.properties 文件。在下面的示例中,您可以有一个jaxb.properties 文件在package1package2 中。

    JAXBContext jc = JAXBContext.newInstance(package1.Foo.class, package2.Bar.class);
    

    如果您在包名称上创建JAXBContext,那么您至少需要在其中一个包中包含jaxb.properties 文件。请注意,包由“:”分隔。

    JAXBContext jc = JAXBContext.newInstance("package1:package2");
    

    或者有更好的选择

    我的偏好是使用标准 JAXB API 和 jaxb.properties 文件来指定 MOXy 作为 JAXB 提供程序。有些人更喜欢使用本机 MOXy API 来执行此操作:

    JAXBContext jc = org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(new Class[] {Foo.class, Bar.class}, null);
    

    更多信息

    【讨论】:

    • 在提供的链接中,如果我仅在 1 个包中指定 jaxb.properties,我会看到以下输出。 “类 com.sun.xml.bind.v2.runtime.JAXBContextImpl”。如您所见,jaxb.props 所在的包不存在,它正在恢复为 suns 实现。我们不会有这个问题吗?
    • 只要jaxb.properties 文件位于传递给创建JAXBContext 的类的包之一中,就可以了。这就是我试图用那篇文章来证明的。运行该示例时,您是否看到不同的结果?
    • 我还没有运行该示例,但阅读您的帖子向我提出了这个疑问,因为您没有对此进行关闭。如果您可以更新您的帖子以明确声明“此行为正常”,那就太好了。
    • @Pangea - 我已经更新了帖子,试图让这一点更清楚。感谢您引起我的注意。
    • @Blaise:我的错误。我错过了文本()。那纠正了它。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多