Как отправить раздел CDATA в ответе SOAP на Websphere 8.5.5 - PullRequest
0 голосов
/ 04 апреля 2019

Мне нужно отправить SOAP-ответ с элементом типа xs: string.Этот элемент должен содержать раздел CDATA.По умолчанию реализация JAX-WS в Webphere 8.5.5 экранирует специальные символы, такие как '<' '>' или '&', но клиент хочет, чтобы респон не экранировался и не переносился в CDATA.

Объект с строковым элементомгенерируется из wsdl maven с использованием wsimport с аннотацией:

@XmlElement(name = "messageContent", required = true)
protected String messageContent;

Я могу принять запрос, содержащий раздел CDATA, и все работает нормально.В messageContent находится содержимое принятых CDATA, символы не экранированы.Но проблема заключается в отправке ответа в этом объекте - ответ каждый раз экранируется, и я не знаю, как правильно добавить раздел CDATA.

Я уже пытался изменить ответное сообщение в SOAPHandler и в LogicalHandler (где полезная нагрузка имеетвведите javax.xml.transform.Source).Я заменил исходный элемент новым элементом с разделом cdata:

Element newEl = document.createElement(origNode.getNodeName());
CDATASection cdata = document.createCDATASection(origNode.getTextContent());
newEl.appendChild(cdata);
origNode.getParentNode().replaceChild(newEl, origNode);

И каждый раз выходное сообщение SOAP без CDATA и экранированных специальных символов.

Есть ли способ, как действительно добавитьРаздел CDATA, который присутствует в выходном мыльном сообщении?Заранее спасибо.

...