在哪里包含 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 文件?