【发布时间】:2016-05-12 22:58:58
【问题描述】:
我有一个场景,我需要调用服务,直到 web 服务调用的 http 状态为 200。 当子流(SearchSubFlow)不在直到成功时,它工作正常,但当它在直到成功时,它在 SearchSubFlow 中的 Byte Array to String 处出现以下错误。
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>
非常感谢您的帮助!
【问题讨论】:
-
尝试调试您的流程,因为当消息有效负载的类型为:WeaveMessageProcessor$WeaveOutputHandler.. 时 NullPointerException 是可疑的
-
我在调用transform之前在记录器中输出transform中使用的值,它有值,不知道为什么会抛出NullPointerException
-
在 global.xml 中我添加了
直到成功。有什么需要补充的吗?