使用模式派生类时,MOXy是否需要任何特殊功能?

时间:2014-10-16 18:55:54

标签: jaxb moxy

我看到了这个问题:

Using Moxy as JAXB Implementation and setting jaxb.properties with more than one POJO package

想要问以下内容:

使用模式派生类时,MOXy是否需要任何特殊功能?例如,每个包中都需要jaxb.properties个文件吗?

2 个答案:

答案 0 :(得分:3)

以下内容适用于这些类是从XML Schema生成的,还是手工构建的POJO。

将MOXy指定为个人JAXBContext

的JAXB提供程序

使用JAXB (JSR-222)提供程序(例如MOXy)在内容路径(一个或多个程序包名称)上创建JAXBContext时,除了默认值之外,您需要包含{jaxb.properties 1}}文件,其中一个包中有相应的条目。例如,根据下面的代码,jaxb.properties文件可以放在com.example.pkg1包或org.example.pk2包中,也可以放在两者中。

JAXBContext jc = JAXBContext.newInstance("com.example.pkg1:org.example.pkg2");

jaxb.properties的内容必须是:

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

将MOXy指定为所有JAXBContexts的默认JAXB提供程序

或者,您可以配置环境,以便MOXy是默认的JAXB提供程序,以便不需要jaxb.properties文件。这样做如下:

您还可以利用META-INF/services机制将MOXy指定为默认的JAXB提供程序:

  1. 在目录javax.xml.bind.JAXBContext
  2. 中创建一个包含名为META-INF/services的文件的JAR
  3. javax.xml.bind.JAXBContext文件的内容必须为org.eclipse.persistence.jaxb.JAXBContextFactory
  4. 将该jar添加到类路径中。

答案 1 :(得分:0)

我没有权利发表评论,所以我在这里给出答案。 最近我在项目中选择了MOXy并且也遇到了问题。我们使用maven作为构建工具,如果你也使用maven,你可以简单地在META-INF/services目录下创建dire resources,并在javax.xml.bind.JAXBContext下创建一个名为META-INF/services的文件,然后使用内容org.eclipse.persistence.jaxb.JAXBContextFactory编辑文件。