24

我有 REST (Jersey) Web 服务,它使用一些编组/解组到 XML 的数据对象。数据对象位于 web 服务战争所依赖的单独项目/jar 中。

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

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

问题是,应该将 jaxb.properties 文件包含在数据对象 jar 中还是包含在 Web 服务战争中,还是两者都包含?

4

2 回答 2

29

如果您不想或不能使用 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 代码中显式指定的,而不是在配置文件中隐式指定的。

于 2015-10-13T10:32:04.687 回答
12

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

于 2010-12-03T00:54:19.890 回答