2012-02-17 24 views
6

Tôi có Ứng dụng Mule nơi tôi gửi Yêu cầu tới nhiều dịch vụ web và tổng hợp Danh sách phản hồi tôi nhận được, ý tưởng là nhận phản hồi đầu tiên của Danh sách bằng cách trả lời các CustomJavaClass khi danh sách được xử lý:Mule ESB: Không thể sao chép tin nhắn với tải trọng luồng

return responses.get(0); 

tôi có thể đạt được WSDL nếu tôi cố gắng để đạt được nó trên một trình duyệt, các WSDL trở trông giống như giả của nó để xem xét. Nhưng tôi Tôi cố gắng để gửi một tin nhắn qua soapUI tôi nhận được ngoại lệ sau đây:

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 Ngoại lệ:

Failed to route event via endpoint: org.mule.api.p[email protected]ceb6dd. Message payload is of type: ContentLengthInputStream 

cấu hình hiện tại của tôi:

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

Trả lời

8

Lấy WSDL làm việc vì Yêu cầu GET không tải trọng. Nhưng khi bạn cố gắng gọi một phương thức SOAP, tải trọng POST là một InputStream, mà tất nhiên không thể được gửi đi nhiều lần.

Như vậy: serialize dòng HTTP đầu vào với a:

<object-to-byte-array-transformer /> 

ngay sau http: inbound-thiết bị đầu cuối.

Các vấn đề liên quan