5

在我们的应用程序中,我们遇到非常零星的运行时异常,这些异常会使我们的消息处理器(它们是在 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 中引发的异常有关)。

这可能是问题的一部分吗?

4

2 回答 2

1

在对我的代码进行了一些重大更改后,我昨天遇到了这个问题。这个特定的帖子是我可以通过谷歌搜索这个特定错误找到的唯一信息——总是一个不好的迹象。经过数小时无果的深度调试,将代码的原始工作版本与新的非工作版本进行比较,我决定开始撤销我的代码更改,以查看问题出现的位置/时间。好吧,在几乎每一个代码更改都退出之后,问题仍然存在。我终于意识到这个问题可能在代码之外。事实证明,在某个时候,我在我的 lib 目录中添加了一个无关的库:wstx.jar。一旦我删除了那个库,一切都很好。所以显然它是在利用错误的类来尝试执行这个操作。

不确定这是否对您有任何帮助,但即使没有,我认为有一天有人可能会偶然发现它并发现它很有用。

于 2018-06-29T21:27:15.713 回答
1

您必须更改类路径顺序。首先指向所有axis2 jars然后指向weblogic.jar类路径。希望它能解决你的问题。

于 2016-06-01T14:39:16.243 回答