0
我們在使用代理客戶端將XML發送到Web服務時出現錯誤。下面是配置:mule java.lang.reflect.Method不能轉換爲java.lang.String(java.lang.ClassCastException)
<flow name="CreateDIMEntry" doc:name="CreateDIMEntry">
<vm:outbound-endpoint exchange-pattern="one-way" path="DIM_VM" doc:name="VM"/>
<byte-array-to-string-transformer doc:name="Byte Array to String"/>
<mulexml:xslt-transformer maxIdleTransformers="2" maxActiveTransformers="5" xsl-file="D:\Users\vkamat\Desktop\dim\src\main\resources\addenvelopetopayload.xsl" doc:name="XSLT"/>
<byte-array-to-string-transformer doc:name="Byte Array to String"/>
<logger message="I am here..#[message.payload]" level="INFO" doc:name="Logger"/>
<set-property propertyName="SOAPAction" value="urn:com.org.ProcessActivity" doc:name="Property"/>
<set-property propertyName="Content-Type" value="application/soap+xml" doc:name="Property"/>
<!-- <set-property propertyName="SOAPAction" value="urn:com.org.ProcessActivity" doc:name="Property"/> -->
<cxf:proxy-client doc:name="SOAP" payload="envelope">
</cxf:proxy-client >
<http:outbound-endpoint exchange-pattern="request-response" host="${dim.host}" port="${dim.port}" method="POST" doc:name="HTTP" path="${dim.path}">
</http:outbound-endpoint>
</flow>
調用如下測試流程此流程時,它工作正常
<flow name="DimFlow1" doc:name="DimFlow1">
<file:inbound-endpoint path="D:\Documents\test" responseTimeout="10000" doc:name="File"/>
<flow-ref name="CreateDIMEntry" doc:name="Flow Reference"/>
</flow>
但可以集成到另一個流時,它給出了一個錯誤,讓主流的片段從它獲取調用
<async doc:name="Async">
<mulexml:object-to-xml-transformer doc:name="Object to XML"/>
<mulexml:xslt-transformer maxIdleTransformers="2" maxActiveTransformers="5" xsl-file="D:\addenvelopetopayload.xsl" doc:name="XSLT"/>
<logger message="before DIM-- #[message.payload]" level="INFO" doc:name="Logger"/>
<flow-ref name="CreateDIMEntry" doc:name="Flow Reference"/>
</async>
遇到的錯誤是
********************************************************************************
Message : java.lang.reflect.Method cannot be cast to java.lang.String. Failed to route event via endpoint: org.mule.module.cxf.CxfOutboundMessageProcessor. Message payload is of type: ReversibleXMLStreamReader
--------------------------------------------------------------------------------
Exception stack is:
1. java.lang.reflect.Method cannot be cast to java.lang.String (java.lang.ClassCastException)
org.mule.module.cxf.CxfOutboundMessageProcessor:338 (null)
2. java.lang.reflect.Method cannot be cast to java.lang.String. Failed to route event via endpoint: org.mule.module.cxf.CxfOutboundMessageProcessor. Message payload is of type: ReversibleXMLStreamReader (org.mule.api.transport.DispatchException)
org.mule.module.cxf.CxfOutboundMessageProcessor:150 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transport/DispatchException.html)
--------------------------------------------------------------------------------
Root Exception stack trace:
java.lang.ClassCastException: java.lang.reflect.Method cannot be cast to java.lang.String
at org.mule.module.cxf.CxfOutboundMessageProcessor.getMethodOrOperationName(CxfOutboundMessageProcessor.java:338)
at org.mule.module.cxf.CxfOutboundMessageProcessor.getOperation(CxfOutboundMessageProcessor.java:356)
at org.mule.module.cxf.CxfOutboundMessageProcessor.doSendWithClient(CxfOutboundMessageProcessor.java:212)
+ 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************
確定有效載荷要'CreateDIMEntry'在兩個呼叫流程相同類型/格式的? – eebbesen
在工作情況下,它是ReceiverFileInputStream,而在非工作情況下它是字節數組。是否因爲有效載荷格式不匹配? –
您可能需要嘗試更多/不同的[轉換](http://www.milesoft.org/documentation/display/current/Using+Transformers)。我認爲這是一個Mule功能測試的完美場景,它可以讓你混淆輸入和輸出以使其工作。此外,[這個問題](http://stackoverflow.com/questions/18297125/mule-method-cannot-be-cast-to-string)可能不是完全相同的問題,但可能會提供一些見解。 – eebbesen