在哪里包含 jaxb.properties 文件?

Posted

技术标签:

【中文标题】在哪里包含 jaxb.properties 文件?【英文标题】:Where to include jaxb.properties file? 【发布时间】:2011-05-19 10:39:55 【问题描述】:

我有 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 中还是包含在 webservice war 中还是两者都包含?

【问题讨论】:

【参考方案1】:

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

【讨论】:

谢谢,帮了大忙。 谢谢。它帮助解决了我的一个关键问题。 我更喜欢这个解决方案而不是 jax.properties 文件,它在测试运行期间被 maven 忽略(至少对我而言)。 jc = JAXBContextFactory.createContext("com.mymodels", null) 对我有用。 这不仅比这个问题的其他答案要简单得多,也比许多其他问题要简单得多。非常感谢!【参考方案2】:

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

http://bdoughan.blogspot.com/2010/08/creating-restful-web-service-part-35.html

【讨论】:

如果我的模型类分布在多个目录中怎么办?我需要在每个文件夹中放置一个jaxb.properties 文件吗?

以上是关于在哪里包含 jaxb.properties 文件?的主要内容,如果未能解决你的问题,请参考以下文章

在哪里放置包含语句、标题或来源?

如何判断头文件包含在哪里?

MEANJS 样板:在哪里包含自定义 javascript 文件?

Perl 程序如何知道在哪里可以找到包含它使用的 Perl 模块的文件?

如何告诉 g++ 编译器在哪里搜索包含文件?

cmake 如何知道包含文件和库在哪里?