HeaderElement1_1Impl ClassCastException Java,使用JDK而不是saaj-impl

问题描述 投票:0回答:1

为了记录我的应用程序,我试图获取MessageContext并解析标头值。当我们尝试创建迭代器列表时发生异常:

Iterator<SoapHeaderElement> contextHeaders = ((SoapMessage)messageContext.getRequest()).getSoapHeader().examineAllHeaderElements();
SoapHeaderElement element = (SoapHeaderElement)contextHeaders.next();
Iterator headers = ((HeaderElement1_1Impl)((DOMSource)element.getSource()).getNode()).getChildElements();

当我们对Spring 2.0进行更改时,就开始发生这种情况。它导致以下错误消息:

java.lang.ClassCastException: com.sun.xml.internal.messaging.saaj.soap.ver1_1.HeaderElement1_1Impl cannot be cast to com.sun.xml.messaging.saaj.soap.ver1_1.HeaderElement1_1Impl

我听说过的大多数解决方案都涉及在运行时使用JVM -D参数。但是,这以前没有参数就可以工作,因此我想找到一个解决方案,该解决方案不需要在所有spring-boot应用程序中都需要更改java参数。

两个正在战斗的图书馆是saaj-impl:1.5.1(来自Spring)和JDK。我不确定为什么要尝试将SOAP元素转换为JDK。

任何帮助将不胜感激!让我知道是否需要更多详细信息。

java spring-boot soap classcastexception saaj
1个回答
0
投票

切换到saaj-impl 1.3似乎可以解决此问题。我想知道为什么会这样,但肯定可以解决。

© www.soinside.com 2019 - 2024. All rights reserved.