Mule - 'map'运算符的类型不匹配

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mule - 'map'运算符的类型不匹配相关的知识,希望对你有一定的参考价值。

要求是将CXF服务纳入骡子。据我所知,我尝试在mule中创建配置,但收到错误,如下所示。

Exception while executing: 
        (payload.ns0#ValidateVIN.*ns0#VIN map ((vIN , indexOfVIN) -> {
         ^
Type mismatch for 'map' operator
     found :null, :function
  required :array, :function.

附上以下代码。

<?xml version="1.0" encoding="UTF-8"?>
<mule ... >
    <http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="9009" basePath="Mule" doc:name="HTTP Listener Configuration"/>
    <cxf:configuration name="Autoprefill_CXF_Configuration" enableMuleSoapHeaders="true" initializeStaticBusInstance="true" doc:name="CXF Configuration"/>
    <flow name="autoprefillFlow">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/VINService" allowedMethods="POST" doc:name="HTTP"/>
        <logger message="#[message.payloadAs(String)]" level="INFO" doc:name="Logger"/>
        <dw:transform-message doc:name="Transform Message" metadata:id="566ab616-f256-4763-af42-82d4cbbcc277">
            <dw:input-payload mimeType="application/xml"/>
            <dw:set-payload><![CDATA[%dw 1.0
            %output application/xml
            %namespace ns0 http://www.pwc.com/vin
            ---
            {
                ns0#ValidateVIN: {
                    (payload.ns0#ValidateVIN.*ns0#VIN map ((vIN , indexOfVIN) -> {
                        ns0#VIN: vIN
                    }))
                }
            }]]></dw:set-payload>
        </dw:transform-message>
        <cxf:simple-client operation="validateVIN" serviceClass="autoprefill.VINPort" doc:name="CXF"/>
        <logger message="#[message.payloadAs(String)]" level="INFO" doc:name="Logger"/>
    </flow>
</mule>

我尝试删除消息转换属性,但那次我得到以下错误

java.lang.String cannot be cast to java.util.Collection. Failed to route event via endpoint: org.mule.module.cxf.CxfOutboundMessageProcessor

该服务期待一个字符串列表。我不知道如何在骡子中做到这一点。任何帮助都感激不尽。

答案

问题出在Transform Message组件中。

map函数期望一个数据数组(数据集合),但它没有收到任何值。

我建议在Transform Message组件之前检查有效载荷。有效载荷可能不是预期的格式。如果您可以在此处共享有效负载(或至少是完整日志),我可以帮助您进行转换。

以上是关于Mule - 'map'运算符的类型不匹配的主要内容,如果未能解决你的问题,请参考以下文章

mule3 sftp:输入端点编码

使用 Mule 重新排队 JMS 请求

C ++ - 与'运算符不匹配

如何将 mule(基于 Java)日志推送到 Prometheus 存储?

我正在尝试对运算符'+'执行二进制重载,但输出错误,我不明白为什么?

无法将自定义 Mule 连接器部署到 Anypoint Exchange