【问题标题】:mule : Until successful doesn't accept the data weave transformmule : 直到成功不接受数据编织变换
【发布时间】: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 中我添加了 直到成功。有什么需要补充的吗?

标签: mule dataweave


【解决方案1】:

没有引用下面的对象存储解决了这个问题

<until-successful  maxRetries=5 doc:name="Retry to check status" >
        <flow-ref name="SearchSubFlow" doc:name="SearchSubFlow"/>
    </until-successful>

【讨论】:

    【解决方案2】:

    使用&lt;mulexml:dom-to-xml-transformer doc:name="DOM to XML"/&gt; 代替&lt;byte-array-to-string-transformer doc:name="Byte Array to String"/&gt;

    希望这会有所帮助。

    【讨论】:

    • 我已经尝试过,甚至现在尝试过。仍然低于错误 org.mule.api.transformer.TransformerMessagingException: null (java.lang.NullPointerException)。消息负载的类型为:WeaveMessageProcessor$WeaveOutputHandler (org.mule.api.transformer.TransformerMessagingException)。消息负载的类型:WeaveMessageProcessor$WeaveOutputHandler
    • 尝试使用
    • 即使失败了 org.mule.api.MessagingException:执行表达式“message.payloadAs(java.lang.Class)”失败。 (org.mule.api.expression.ExpressionRuntimeException)。消息负载的类型:WeaveMessageProcessor$WeaveOutputHandler
    猜你喜欢
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多