Mule ESB : Cannot copy message with a stream payload
11,100
Getting the WSDL works because the GET request carries no payload. But when you try to invoke a SOAP method, the POST payload is an InputStream, which of course can't be dispatched several times.
Thus: serialize the HTTP input stream with a:
<object-to-byte-array-transformer />
right after the http:inbound-endpoint.
Comments
-
Kiesa almost 2 years
I have a Mule Application where I send a Request to Multiple WebServices and aggregate the List of responses i get , the idea is to get the first response of the List by returning it from the CustomJavaClass where the list is handled :
return responses.get(0);
I am able to reach the WSDL if I try to reach it over a Browser , the returned WSDL looks like its supposed to look . But i I try to send a message via SoapUi i get the following exception :
Exception stack is: 1. Cannot copy message with a stream payload. Payload type is "org.apache.commons.httpclient.ContentLengthInputStream". Message payload is of type: ContentLengthInputStream (org.mule.api.MessagingException) org.mule.routing.outbound.AbstractSequenceRouter:73 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html) -------------------------------------------------------------------------------- Root Exception stack trace: org.mule.api.MessagingException: Cannot copy message with a stream payload. Payload type is "org.apache.commons.httpclient.ContentLengthInputStream". Message payload is of type: ContentLengthInputStream at org.mule.routing.outbound.AbstractSequenceRouter.route(AbstractSequenceRouter.java:73) at org.mule.routing.outbound.AbstractOutboundRouter$1.doInTransaction(AbstractOutboundRouter.java:102) at org.mule.routing.outbound.AbstractOutboundRouter$1.doInTransaction(AbstractOutboundRouter.java:99) + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
SOAPUi Exception :
Failed to route event via endpoint: org.mule.api.processor.MessageProcessors$LifecyleAwareMessageProcessorWrapper@ceb6dd. Message payload is of type: ContentLengthInputStream
my current configurations :
<?xml version="1.0" encoding="UTF-8"?> <mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:mulexml="http://www.mulesoft.org/schema/mule/xml" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" xmlns:core="http://www.mulesoft.org/schema/mule/core" xmlns:cxf="http://www.mulesoft.org/schema/mule/cxf" xmlns:tcp="http://www.mulesoft.org/schema/mule/tcp" xmlns:jms="http://www.mulesoft.org/schema/mule/jms" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="CE-3.2.1" xsi:schemaLocation=" http://www.mulesoft.org/schema/mule/xml http://www.mulesoft.org/schema/mule/xml/current/mule-xml.xsd http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.mulesoft.org/schema/mule/cxf http://www.mulesoft.org/schema/mule/cxf/current/mule-cxf.xsd http://www.mulesoft.org/schema/mule/tcp http://www.mulesoft.org/schema/mule/tcp/current/mule-tcp.xsd http://www.mulesoft.org/schema/mule/jms http://www.mulesoft.org/schema/mule/jms/current/mule-jms.xsd "> <flow name="flows1Flow1" doc:name="flows1Flow1"> <http:inbound-endpoint exchange-pattern="request-response" address="http://localhost:4433/miniwebservice" encoding="UTF-8" mimeType="text/xml" doc:name="HTTP"/> <logger level="INFO" category="ddo" doc:name="Logger"/> <all doc:name="All"> <processor-chain> <message-properties-transformer encoding="UTF-8" mimeType="text/xml" doc:name="Message Properties"> <add-message-property key="http.method" value="#[header:INBOUND:http.method]"/> </message-properties-transformer> <http:outbound-endpoint exchange-pattern="request-response" address="http://localhost:4435/miniwebservice#[header:INBOUND:http.request]" encoding="UTF-8" mimeType="text/xml" doc:name="HTTP"/> <mulexml:xslt-transformer mimeType="text/xml" maxIdleTransformers="2" maxActiveTransformers="5" xsl-file="C:\Users\kiesa\Desktop\XSLReplace.xsl" doc:name="XSLT"/> </processor-chain> <processor-chain> <message-properties-transformer encoding="UTF-8" mimeType="text/xml" doc:name="Message Properties"> <add-message-property key="http.method" value="#[header:INBOUND:http.method]"/> </message-properties-transformer> <http:outbound-endpoint exchange-pattern="request-response" address="http://localhost:4434/miniwebservice#[header:INBOUND:http.request]" encoding="UTF-8" mimeType="text/xml" doc:name="HTTP"/> <mulexml:xslt-transformer mimeType="text/xml" maxIdleTransformers="2" maxActiveTransformers="5" xsl-file="C:\Users\kiesa\Desktop\XSLReplace2.xsl" doc:name="XSLT"/> </processor-chain> </all> <mulexml:xml-to-object-transformer doc:name="XML to Object"/> <component class="CustomJavaClass" doc:name="Java"/> <byte-array-to-string-transformer ignoreBadInput="true" encoding="UTF-8" mimeType="text/xml" doc:name="Byte Array to String"/> </flow> </mule>
-
ravibeli almost 5 yearsHow to resolve similar problem as above here: I am using Mule 4.2.1 Anypoint Studio 7.3.4:
Payload can be transformed by using an <object-to-byte-array-transformer> in order to be able to copy the message. Payload type is "org.mule.runtime.core.internal.streaming.bytes.ManagedCursorStreamProvider"