我有REST(Jersey)webservice,它使用一些编组/解组到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中,还是两者都包含在内?
答案 0 :(得分:21)
如果你不想或不能使用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代码中显式指定,而不是在配置文件中隐式指定。
答案 1 :(得分:12)
使用模型类打包jaxb.properties文件。 GlassFish尚未包含MOXy包,但您可以轻松添加它。查看我的博客了解更多信息: