JBoss Community

SOAPClient and multipart soap response

created by Maksym RMA in JBoss ESB Development - View the full discussion

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....

Reply to this message by going to Community

Start a new discussion in JBoss ESB Development at Community