may be you gonna to proceed some xml document, which looks like: <a>adfs</a> <b>adfs</b>
That means you have multiple root nodes exist, only one root node is allowed like below: <c> <a>adfs</a> <b>adfs</b> </c> 2013/6/19 remo408 <[email protected]> > Updating the CXF version to 2.7.4 partly fixed the issue. Then i need to > Update my interceptor code as following to resolve this issue . The > solution > is well explained in this link: > > public class TestOutInterceptor extends AbstractSoapInterceptor { > private static Logger logger = LoggerFactory > .getLogger(EnterpriseServiceMonitoringOutInterceptor.class); > private SAAJOutInterceptor saajOut = new SAAJOutInterceptor(); > > > > > public TestOutInterceptor() { > super(Phase.PRE_PROTOCOL); > getAfter().add(SAAJOutInterceptor.class.getName()); > // TODO Auto-generated constructor stub > } > > @Override > public void handleMessage(SoapMessage soapMessage) throws Fault { > getSOAPMessage(soapMessage); > //add the ending interceptor to do the work > soapMessage.getInterceptorChain().add(new EndingInterceptor()); > } > > > > private SOAPMessage getSOAPMessage(SoapMessage smsg){ > > SOAPMessage soapMessage = smsg.getContent(SOAPMessage.class); > > if (soapMessage == null) { > > > > saajOut.handleMessage(smsg); > > soapMessage = smsg.getContent(SOAPMessage.class); > > } > > return soapMessage; > > } > > static class EndingInterceptor extends AbstractSoapInterceptor { > > private SAAJOutEndingInterceptor saajOutEnding = new > SAAJOutEndingInterceptor(); > public EndingInterceptor() { > super(Phase.PRE_PROTOCOL_ENDING); > addBefore(SAAJOutEndingInterceptor.class.getName()); > } > public void handleMessage(SoapMessage soapMessage) throws Fault { > ServiceData serviceData=(ServiceData) > soapMessage.getExchange().remove("esmServiceData"); > System.out.println("Test"); > System.out.println(soapMessage.getInterceptorChain()); > > SOAPMessage soapMessagexml = getSOAPMessage(soapMessage); > if(serviceData!=null){ > serviceData.setResponseTime(new BigDecimal((new > Date()).getTime())); > > ByteArrayOutputStream out = new ByteArrayOutputStream(); > try { > soapMessagexml.writeTo(out); > String strMsg = new String(out.toByteArray()); > serviceData.setResponsePayload(strMsg); > logger.debug(strMsg); > } catch (SOAPException e) { > logger.error("", e); > } catch (IOException e) { > logger.error("", e); > } > > } > } > > private SOAPMessage getSOAPMessage(SoapMessage smsg){ > > SOAPMessage soapMessage = smsg.getContent(SOAPMessage.class); > > if (soapMessage == null) { > > > > saajOutEnding .handleMessage(smsg); > > soapMessage = smsg.getContent(SOAPMessage.class); > > } > > return soapMessage; > > } > } > > } > > > > -- > View this message in context: > http://cxf.547215.n5.nabble.com/org-w3c-dom-DOMException-HIERARCHY-REQUEST-ERR-An-attempt-was-made-to-insert-a-node-where-it-is-not-d-tp5729455p5729462.html > Sent from the cxf-user mailing list archive at Nabble.com. > -- Thanks GangLiu MSN: [email protected] Skype: gang.liu.talendbj
