哪里包含jaxb.properties文件?

sdo*_*oca 17 properties jaxb eclipselink moxy

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

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

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
Run Code Online (Sandbox Code Playgroud)

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

Gas*_*rdP 22

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

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

JAXBContext jaxbContext = JAXBContext.newInstance(new Class[]{Person.class, ObjectFactory.class}, properties);
Run Code Online (Sandbox Code Playgroud)

但是,请指定要使用的工厂:

JAXBContext jaxbContext = JAXBContextFactory.createContext(new Class[]{Person.class, ObjectFactory.class}, properties);
Run Code Online (Sandbox Code Playgroud)

工厂在哪里:

import org.eclipse.persistence.jaxb.JAXBContextFactory;
Run Code Online (Sandbox Code Playgroud)

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


bdo*_*han 12

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

  • 如果我的模型类分布在多个目录中怎么办?我是否需要在每个文件夹中放置一个`jaxb.properties`文件? (5认同)
  • 是:“JAXB 提供程序必须在每个包含模式派生类的包中生成 jaxb.properties 文件。” (2认同)