Reason for failure is that the
SOAP request to another service does not contain the the Service name- in order to get around is to insert this manually
Before insertion -
<xml-fragment>
<Elements> complex structure....</elements>
</xml-fragment>
Repalce <xml-fragment> with uour service i.e.
<getMyData xmlns=..... xmlns:s1=......>
<Elements>..complex structure..</elements>
</getMyData>
==== code is below
public SOAPEnvelope getEnv() {
String serviceHeader="<getMyData xmlns=..... xmlns:s1=......>"
String xmlBean = param.xmlText();
StringBuffer sb = new StringBuffer();
String newXMLBean = xmlBean.substring(14, xmlBean.length() - 15);
sb.append(serviceConfig.get("serviceHeader"));
sb.append("<element>");
sb.append(newXMLBean);
sb.append("</elements>");
sb.append("</");
sb.append(serviceConfig.get("operation"));
sb.append(">");
Document request = null;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
request = builder.parse(new java.io.ByteArrayInputStream(sb.toString().getBytes()));
SOAPBodyElement requestMessage = new SOAPBodyElement(request.getDocumentElement());
envelope = new SOAPEnvelope();
return envelope.addBodyElement(requestMessage);
}
Service service = new Service();
Call call = (Call) service.createCall(new QName("serviceport"),
new QName(("operation"));
call.setTargetEndpointAddress(new java.net.URL(("endpoint")));
SOAPEnvelope response = call.invoke(getEnv());