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