У меня есть рабочее решение с веб-сервисом, развернутым на GlassFish, и когда клиент отправляет XML-запрос в веб-сервис, я извлекаю первый ребенок из SOAPBody. Это отлично работает с GlassFish 3.1.1 и java runtime 1.6.0_06-b02, работающими под управлением Windows 7, Server 2003 и Server 2008 R2.
Меня попросили развернуть решение на GlassFish 3.1.2 и java runtime 1.7.0_09, запущенном на Ubuntu 12.10
При работе с использованием тестового жгута, который не имеет пробелов в xml SOAPEnvelope, как системы 3.1.1, так и 3.1.2 работают, однако, если я использую SoapUI для отправки сообщения, содержащего пробелы, установки Window работают правильно, а Ubuntu версия вызывает литое исключение.
Когда я пытаюсь запустить следующий фрагмент кода (обработчик сообщений, назначенный веб-службе):
public boolean handleMessage(SOAPMessageContext messageContext) {
SOAPElement requestElt = (SOAPElement) messageContext.getMessage().getSOAPBody().getFirstChild();
//Do things here
}
Когда конверт содержит пробелы, бросается следующее исключение:
com.sun.xml.messaging.saaj.soap.impl.TextImpl cannot be cast to javax.xml.soap.SOAPElement
Может ли кто-нибудь объяснить эту проблему для меня, пожалуйста?