如何在 weblogic 12.1.3 中指定 JAXBContext 实现
How to specify JAXBContext implementation in weblogic 12.1.3
我在 java 中创建了一个 MDB,使用 JAXB 来解析 xml 内容。
这个 MDB 在 10.3.4 weblogic 服务器上运行了很长时间(大约 3 年)。
现在我必须将它迁移到 weblogic 12.1.3 服务器上,由于我还不知道的原因,weblogic 选择的实现与我想要的不一样。但是我不知道怎么设置。
现在我的代码初始化代码是这样的:
private JAXBContext getJAXBContext() throws JAXBException {
if (v1JaxbContext == null) {
v1JaxbContext = JAXBContext.newInstance(MyClass.class);
}
System.out.println("jaxbContext : "+v1JaxbContext.getClass().getName());
return v1JaxbContext;
}
MyClass.java 由 JAXB 从 XSD 生成。
在我的 eclipse 上,输出是 com.sun.xml.internal.bind。v2.runtime.JAXBContextImpl
在我的 weblogic 方面,输出是 org.eclipse.persistence.jaxb.JAXBContext
因为我通过 EAR 使用我的代码,所以我不得不添加这些行:
<wls:prefer-application-resources>
<resource-name>META-INF/services/javax.xml.bind.JAXBContext</resource-name>
</wls:prefer-application-resources>
并在我的 EAR services/javax.xml.bind.JAXBContex 的 META-INF 目录中创建文件,其中仅包含,并且有效
com.sun.xml.bind.v2.ContextFactory
我遇到了同样的问题并制定了不需要创建新文件的类似解决方案:
<prefer-application-resources>
<resource-name>javax.xml.bind.*</resource-name>
</prefer-application-resources>
我在 java 中创建了一个 MDB,使用 JAXB 来解析 xml 内容。 这个 MDB 在 10.3.4 weblogic 服务器上运行了很长时间(大约 3 年)。
现在我必须将它迁移到 weblogic 12.1.3 服务器上,由于我还不知道的原因,weblogic 选择的实现与我想要的不一样。但是我不知道怎么设置。
现在我的代码初始化代码是这样的:
private JAXBContext getJAXBContext() throws JAXBException {
if (v1JaxbContext == null) {
v1JaxbContext = JAXBContext.newInstance(MyClass.class);
}
System.out.println("jaxbContext : "+v1JaxbContext.getClass().getName());
return v1JaxbContext;
}
MyClass.java 由 JAXB 从 XSD 生成。
在我的 eclipse 上,输出是 com.sun.xml.internal.bind。v2.runtime.JAXBContextImpl
在我的 weblogic 方面,输出是 org.eclipse.persistence.jaxb.JAXBContext
因为我通过 EAR 使用我的代码,所以我不得不添加这些行:
<wls:prefer-application-resources>
<resource-name>META-INF/services/javax.xml.bind.JAXBContext</resource-name>
</wls:prefer-application-resources>
并在我的 EAR services/javax.xml.bind.JAXBContex 的 META-INF 目录中创建文件,其中仅包含,并且有效
com.sun.xml.bind.v2.ContextFactory
我遇到了同样的问题并制定了不需要创建新文件的类似解决方案:
<prefer-application-resources>
<resource-name>javax.xml.bind.*</resource-name>
</prefer-application-resources>