在同一包中将 MOXy 设置为没有属性文件的 JAXB 提供程序

Set MOXy as JAXB Provider without properties file in the same package

我正在尝试使用 MOXy 作为我的 JAXB 提供程序,以便将 marshal/unmarshal 内容放入 XML/JSON。

我创建了 "jaxb.properties" 文件,内容如下:javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactor

一切正常。

        JAXBContext jaxbContext = JAXBContext.newInstance(ServerInformation.class); // The jaxb.properties must be in the same package as "ServerInformation.java"
        Marshaller marshaller = jaxbContext.createMarshaller();

        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.setProperty(MarshallerProperties.MEDIA_TYPE, MediaType.APPLICATION_JSON);
        marshaller.setProperty(MarshallerProperties.JSON_INCLUDE_ROOT, false);

我的问题是:有没有办法把这个文件放在另一个包里?我正在使用 Maven 插件 "wadl2java" 生成一些包和 class,并且在每次 Maven 构建之后,所有包都会被删除并重新创建。所以我每次都会丢失这个文件...... 我想要一个解决方案,将 MOXy 设置为我的 JAXB 提供程序,而我的资源包中没有 "jaxb.properties"。 我在同一个项目中还有一些其他的包,我可以把这个文件放进去。

有什么想法吗?

谢谢。

有几种方法可以将 MOXy 设置为 JAXB 提供程序。

  1. 将系统 属性 JAXBContext.JAXB_CONTEXT_FACTORY 设置为 org.eclipse.persistence.jaxb.JAXBContextFactory

  2. 创建 META-INF/services/javax.xml.bind.JAXBContext 文件 org.eclipse.persistence.jaxb.JAXBContextFactory

  3. 使用org.eclipse.persistence.jaxb.JAXBContextFactory

    • Can I replace jaxb.properties with code?