在我们的应用程序中,我们遇到非常零星的运行时异常,这些异常会使我们的消息处理器(它们是在 Java 8 上运行的独立 Java 进程)崩溃。在发生此异常时,处理器通常会尝试执行 Web 服务调用。
例外是
java.lang.Error: Failed to create new instance of com.sun.xml.internal.ws.api.streaming.XMLStreamWriterFactory$1
at com.sun.xml.internal.ws.api.streaming.ContextClassloaderLocal.createNewInstance(ContextClassloaderLocal.java:63)
..
Caused by: java.lang.IllegalArgumentException: Unable to access unsupported property javax.xml.stream.isRepairingNamespaces
at weblogic.xml.stax.ConfigurationContextBase.check(ConfigurationContextBase.java:90)
奇怪的是,整个应用程序在99.9% 的时间里都没有错误地运行:上述异常很少发生(大约每隔几天)。崩溃后,处理器会自动重新启动,并再次完美运行,直到在看似随机的时间间隔后再次发生相同的异常。
到目前为止,我们无法将其与 JVM 或运行应用程序的主机的任何不当行为联系起来。
有没有人知道为什么这种unsupported property javax.xml.stream.isRepairingNamespaces
异常会偶尔出现?
我们正在jdk1.8.0_66
运行Red Hat 4.8.5-4
。Web 服务接口是使用JAX-WS
.
编辑:
我无法共享类路径(很多内部信息,抱歉)。不过,我们确实有 Weblogic 完整客户端:wlfullclient-12.1.3.jar
. 它通过 ServiceLoader 定义了一个 XML 工厂
META-INF/services/javax.xml.stream.XMLOutputFactory --> weblogic.xml.jaxp.RegistryXMLOutputFactory
其中 as xml-apis-1.4.01.jar
(也在类路径上)包含 javax/xml/stream/XMLOutputFactory.class (与 ConfigurationContextBase 中引发的异常有关)。
这可能是问题的一部分吗?