如何在Websphere 8.5.5上的SOAP响应中发送CDATA部分

时间:2019-04-04 13:38:26

标签: java soap websphere jax-ws cdata

我需要发送xs:string类型的SOAP响应。该元素必须包含CDATA节。默认情况下,Webphere 8.5.5上的JAX-WS实现会转义特殊字符,例如'<''>'或'&',但是客户希望不要将响应转义并包装在CDATA中。

带有字符串元素的对象是由maven使用带注释的wsimport从wsdl生成的:

@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节?预先谢谢你。

0 个答案:

没有答案