在哪里包括jaxb.properties文件?

在哪里包括jaxb.properties文件?,properties,jaxb,eclipselink,moxy,Properties,Jaxb,Eclipselink,Moxy,我有一个REST(Jersey)webservice,它利用了一些数据对象,这些数据对象被封送到XML或从XML封送到XML。数据对象位于webservice war所依赖的单独的项目/jar中 我使用MOXy作为我的JAXB实现,因为我要部署到Glassfish,这已经包括在内了。我知道我需要一个jaxb.properties文件来使用以下条目将jaxb实现设置为MOXy: javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.

我有一个REST(Jersey)webservice,它利用了一些数据对象,这些数据对象被封送到XML或从XML封送到XML。数据对象位于webservice war所依赖的单独的项目/jar中

我使用MOXy作为我的JAXB实现,因为我要部署到Glassfish,这已经包括在内了。我知道我需要一个jaxb.properties文件来使用以下条目将jaxb实现设置为MOXy:

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

问题是,jaxb.properties文件应该包含在数据对象jar中还是包含在webservice war中,或者两者都包含?

您将jaxb.properties文件与模型类打包在一起。GlassFish还没有包含MOXy捆绑包,但您可以轻松添加它。查看我的博客了解更多信息:


如果您不想要或不能使用jaxb.properties(您有很多包,模型在一个外部jar中,您只需要java而不需要配置文件…),您可以直接指定JaxbContextFactory:

不要使用以下方法创建上下文:

JAXBContext jaxbContext = JAXBContext.newInstance(new Class[]{Person.class, ObjectFactory.class}, properties);
但是,请指定要使用的工厂:

JAXBContext jaxbContext = JAXBContextFactory.createContext(new Class[]{Person.class, ObjectFactory.class}, properties);
工厂所在地:

import org.eclipse.persistence.jaxb.JAXBContextFactory;

这是完全相同的,但它是在java代码中显式指定的,而不是在配置文件中隐式指定的

如果我的模型类分布在多个目录中怎么办?我需要在每个文件夹中放置一个
jaxb.properties
文件吗?谢谢,它帮助了我很多。谢谢。它帮助解决了我的一个关键问题。我更喜欢这个解决方案,而不是maven在测试运行期间忽略的jax.properties文件(至少对我来说)。jc=JAXBContextFactory.createContext(“com.mymodels”,null)为我做了这件事。