I have SoapClient service for extenal SOAP WS.
All works great.
When I set property:
<property name="responseAsOgnlMap" value="true" />
I had error processing response, because Content-Type is Content-Type: multipart/related; type="application/xop+xml"
My environment:
JBoss 6.1 and esb 4.10
Sevice config looks like:
<action name="proxy" class="com.cs.esb.core.ejb.util.CustomSoapClient">
<property name="wsdl" value="http://localhost:8080/myservice?wsdl" >
<http-client-property name="configurators" value="AuthBASIC"/>
<http-client-property name="auth-username" value="xxx"/>
<http-client-property name="auth-password" value="xxx"/>
</property>
<property name="SOAPAction" value="xxx" />
<property name="responseAsOgnlMap" value="true" />
</action>
Raw SOAP Response:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
X-Powered-By: Servlet 2.5; JBoss-5.0/JBossWeb-2.1
Content-Type: multipart/related; type="application/xop+xml"; start="<soap.xml@xfire.codehaus.org>"; start-info="text/xml"; boundary="----=_Part_600_1630724789.1343809898519"
Transfer-Encoding: chunked
Date: Wed, 01 Aug 2012 08:31:38 GMT
7aa
------=_Part_600_1630724789.1343809898519
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml"
Content-Transfer-Encoding: 8bit
Content-ID: <soap.xml@xfire.codehaus.org>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body>
.... correct response data....
</soap:Body></soap:Envelope>
2f
------=_Part_600_1630724789.1343809898519--
0
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
X-Powered-By: Servlet 2.5; JBoss-5.0/JBossWeb-2.1
Content-Type: multipart/related; type="application/xop+xml"; start="<soap.xml@xfire.codehaus.org>"; start-info="text/xml"; boundary="----=_Part_601_425283758.1343809902329"
Transfer-Encoding: chunked
Date: Wed, 01 Aug 2012 08:31:42 GMT
7a9
------=_Part_601_425283758.1343809902329
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml"
Content-Transfer-Encoding: 8bit
Content-ID: <soap.xml@xfire.codehaus.org>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body><ns1:billerGroupsResponse xmlns:ns1="http://upbs.cs.com/">
.... correct response data....
</soap:Body></soap:Envelope>
2e
------=_Part_601_425283758.1343809902329--
0
Exception trace is:
2012-08-01 12:56:34,443 DEBUG [org.jboss.soa.esb.listeners.message.ActionProcessingPipeline] (pool-37-thread-1) Unexpected exception caught while processing the action pipeline: org.jboss.soa.esb.actions.ActionProcessingException: soapUI Client Service invocation failed.
at org.jboss.soa.esb.actions.soap.SOAPClient.process(SOAPClient.java:443)
at com.cs.esb.core.ejb.util.CustomSoapClient.process(CustomSoapClient.java:56)
at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.processPipeline(ActionProcessingPipeline.java:649)
at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.processPipeline(ActionProcessingPipeline.java:603)
at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.process(ActionProcessingPipeline.java:433)
at org.jboss.soa.esb.listeners.message.MessageAwareListener$TransactionalRunner.run(MessageAwareListener.java:550)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.io.IOException: Failed to deserialize the SOAP message template
at org.jboss.soa.esb.services.soapui.SoapUIClientService.getDocument(SoapUIClientService.java:704)
at org.jboss.soa.esb.services.soapui.SoapUIClientService.mergeSOAPMessage(SoapUIClientService.java:603)
at org.jboss.soa.esb.services.soapui.SoapUIClientService.mergeResponseTemplate(SoapUIClientService.java:491)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:271)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:670)
at org.jboss.soa.esb.actions.soap.MBeanSoapUIInvoker.mergeResponseTemplate(MBeanSoapUIInvoker.java:207)
at com.cs.esb.core.ejb.util.CustomSoapClient$CustomSoapUIInvoker.mergeResponseTemplate(CustomSoapClient.java:107)
at org.jboss.soa.esb.actions.soap.SOAPClient.process(SOAPClient.java:440)
... 8 more
Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '-' (code 45) in prolog; expected '<'
at [row,col {unknown-source}]: [2,1]
at com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:648)
at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2047)
at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069)
at com.ctc.wstx.evt.WstxEventReader.nextEvent(WstxEventReader.java:196)
at com.ctc.wstx.evt.WstxEventWriter.add(WstxEventWriter.java:230)
at org.jboss.internal.soa.esb.util.XMLHelper.copyXMLEventStream(XMLHelper.java:344)
at org.jboss.internal.soa.esb.util.XMLHelper.copyXMLEventStream(XMLHelper.java:316)
at org.jboss.internal.soa.esb.util.XMLHelper.createDocument(XMLHelper.java:646)
at org.jboss.soa.esb.services.soapui.SoapUIClientService.getDocument(SoapUIClientService.java:702)
... 22 more
I found as sulution to override SOAPClient class and SoapUIInvoker inside. In method SoapUIInvoker.mergeResponseTemplate I parse response handly... it's terrible but I haven't any outher ideas.
Please help....