我正在寻找一种方法来将我的JAXBContext实现配置从[包含实体的每个包中的jaxb.properties
文件]重构为[单个配置文件]。
发现JAXB实施" -section JAXBContext
- 我找到的文档
当调用其中一个newInstance方法时,通过以下步骤发现JAXB实现 ...
3.在关联的类加载器中查找/META-INF/services/javax.xml.bind.JAXBContext文件。此文件遵循标准服务描述符约定,如果存在此类文件,则假定其内容为提供者工厂类。查找的这个阶段是自动发现。它允许用户将JAXB实现放在类路径中,并在没有任何配置的情况下使用它。
这在我的单元测试中有效,但在我在Payara 4.174上部署应用程序时却没有。
使用以下文件时,我从JAXBContext.newInstance(clazz)
获得以下实现:org.eclipse.persistence.jaxb.JAXBContext@15e2f4b5
# src/main/resources/org/example/packagecontainingentity/jaxb.properties
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
然而,当我删除jaxb.properties
并依赖以下文件时,我得到以下实现:bundle://239.0:1/com/sun/xml/bind/v2/runtime/JAXBContextImpl.class
# src/main/resources/META-INF/services/javax.xml.bind.JAXBContext
org.eclipse.persistence.jaxb.JAXBContextFactory
我在项目中找不到javax.xml.bind.JAXBContext
的其他实例(例如在依赖项中),并且我没有JAXB_CONTEXT_FACTORY
JVM设置。
javax.xml.bind.JAXBContext
实际上是在战争中,我尝试了以下位置:
/META-INF/services/javax.xml.bind.JAXBContext
/WEB-INF/classes/META-INF/services/javax.xml.bind.JAXBContext
我在这里缺少什么?我不了解配置系统或我遇到一些Payara错误吗?