HeaderElement1_1Impl ClassCastException Java с использованием JDK, а не saaj-impl - PullRequest
0 голосов
/ 09 января 2020

Для регистрации моего приложения я пытаюсь взять 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 во время выполнения. Однако раньше это работало без аргументов, поэтому я хотел бы найти решение, которое не требует внесения изменений в аргументы java во всех наших приложениях весенней загрузки.

Две библиотеки, которые борются, являются saaj-impl: 1.5.1 (который прибывает из весны) и JDK. Я не уверен, почему он пытается привести элементы SOAP к JDK.

Любая помощь будет оценена! Дайте мне знать, если вам нужно больше деталей.

1 Ответ

0 голосов
/ 10 января 2020

Переход на saaj-impl 1.3, похоже, решает проблему. Я бы предпочел знать, почему это так, но это определенно решает проблему.

...