我有一个场景,我需要调用该服务,直到webservice调用的http状态为200。 子流(SearchSubFlow)工作正常,直到它成功直到成功,但当它在内部直到成功时它会在SearchSubFlow中以字节数组到字符串的下面错误。
org.mule.api.transformer.TransformerMessagingException:null(java.lang.NullPointerException)。消息有效负载的类型为:WeaveMessageProcessor $ WeaveOutputHandler。
<flow name="CheckFlow">
<http:listener config-ref="HTTP_Internal_Listener" path="${CONNECTION_URI}" doc:name="HTTP"/>
<cxf:proxy-service payload="envelope" doc:name="CXF" namespace="http://abc/RetrieveService" service="RetrieveService" soapVersion="1.2" wsdlLocation="${WSDL_RETRIEVE}"/>
<mulexml:dom-to-xml-transformer doc:name="DOM to XML"/>
<set-variable variableName="Ref" value="#[xpath3('//*:CheckRequest/*:Ref')]" doc:name="Get External Ref Number"/>
<until-successful objectStore-ref="objectStore" maxRetries="${RESEND_COUNTER}" millisBetweenRetries="${RESEND_INTERVAL}" doc:name="Retry to check policy status" >
<flow-ref name="SearchSubFlow" doc:name="SearchSubFlow"/>
</until-successful>
</flow>
<sub-flow name="SearchSubFlow">
<dw:transform-message doc:name="PolicySearchWS Request">
<dw:set-payload><![CDATA[%dw 1.0
%output application/xml
%namespace soapenv http://schemas.xmlsoap.org/soap/envelope/
---
{
soapenv#Envelope: {
soapenv#Header: {
InsureJHeader:{
role: "${HEADER_ROLE}"
}
},
soapenv#Body: {
arguments:{
externalQuoteReference: flowVars.Ref
}
}
}
}]]></dw:set-payload>
</dw:transform-message>
<byte-array-to-string-transformer doc:name="Byte Array to String"/>
<message-properties-transformer scope="invocation" doc:name="Set Service Endpoint">
<add-message-property key="serviceEndPoint" value="${APP_SYSTEM}/${SELECT_SERVICE_BASE_URL}/${.CREATE.ADDRESS}"/>
</message-properties-transformer>
<message-properties-transformer doc:name="Set SOAP Action">
<add-message-property key="SOAPAction" value="${CREATE.SOAPACTION}"/>
</message-properties-transformer>
<cxf:proxy-client payload="envelope" doc:name="Proxy"/>
<http:request config-ref="HTTP_Select_Request" path="#[serviceEndPoint]" method="POST" doc:name="Call Search WS">
<http:success-status-code-validator values="200,500"/>
</http:request>
<mulexml:dom-to-xml-transformer doc:name="DOM to XML"/>
<message-properties-transformer scope="invocation" doc:name="Message Properties">
<add-message-property key="PolicySearchErrorMessage" value="#[xpath3('//*:Fault/*:ProcessingFault/*:message')]"/>
<add-message-property key="httpStatus" value="#[message.inboundProperties.'http.status']"/>
</message-properties-transformer>
</sub-flow>
非常感谢您的帮助!
答案 0 :(得分:1)
未引用对象库,如下所示解决了问题
<until-successful maxRetries=5 doc:name="Retry to check status" >
<flow-ref name="SearchSubFlow" doc:name="SearchSubFlow"/>
</until-successful>
答案 1 :(得分:0)
使用<mulexml:dom-to-xml-transformer doc:name="DOM to XML"/>
代替<byte-array-to-string-transformer doc:name="Byte Array to String"/>
希望这有帮助。