Несоответствие типа мула для оператора ‘map’

#mule #mule-component #anypoint-studio

#mule #мул-компонент #anypoint-studio

Вопрос:

Требование состоит в том, чтобы включить службу CXF в mule. Насколько мне известно, я попытался создать конфигурацию в 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
  

Служба ожидает список строк. Я не уверен, как это можно сделать в mule. Любая помощь будет высоко оценена.

Ответ №1:

Проблема в Transform Message компоненте.

Функция map ожидает массив данных (сбор данных), но не получила никакого значения.

Я предлагаю проверить полезную нагрузку перед Transform Message компонентом. Возможно, полезная нагрузка не в ожидаемом формате. Если вы можете поделиться полезной нагрузкой (или, по крайней мере, полными журналами) здесь, я могу помочь вам с преобразованием.