Enrich Mediatior бросает json неверная ошибка - PullRequest
0 голосов
/ 06 августа 2020

Посредник Enrich в WSO2 всегда терпит неудачу из-за json некорректного выражения из класса JSONUtil общих синапсов JSON: {"Topic":"demo","MessageKey":"demo","Header":{"continuum.message.dc.timestamp":["2020-08-06 00:10:14.866313839 +0000 UTC"],"continuum.message.transaction.id":["34ee58ae-288b-4338-bcbc-8971beadebbb"],"continuum.message.source":["demo"],"continuum.message.target":["demo"]},"Message":[{"backupServerName":"","billableSpace":"","client":{"id":1},"cpuSpeed":"","deviceID":"123","deviceName":"MSMA","deviceType":"backups","failedBackupCount":0,"friendlyName":"Ubuntu Server","installationDate":null,"ipAddress":"","isActive":false,"lastSuccessfulBackup":"2018-12-05T05:59:28.83Z","localHardDrives":"","manufacturer":"","modelNumber":"","numberOfProcessors":0,"osName":"","osVersion":"","partnerID":123,"physicalMemory":"","protectedDeviceName":"","psaRoleType":"","purchaseDate":null,"serialNumber":"","successfulBackupCount":0},{"backupServerName":"","billableSpace":"","client":{"id":123},"cpuSpeed":"","deviceID":"123","deviceName":"MSMA","deviceType":"backups","failedBackupCount":0,"friendlyName":"Ubuntu Server","installationDate":null,"ipAddress":"","isActive":false,"lastSuccessfulBackup":"2018-12-05T05:59:28.83Z","localHardDrives":"","manufacturer":"","modelNumber":"","numberOfProcessors":0,"osName":"","osVersion":"","partnerID":123,"physicalMemory":"","protectedDeviceName":"","psaRoleType":"","purchaseDate":null,"serialNumber":"","successfulBackupCount":0},{"backupServerName":"","billableSpace":"","client":{"id":123},"cpuSpeed":"","deviceID":"123","deviceName":"MSMA","deviceType":"backups","failedBackupCount":0,"friendlyName":"Ubuntu Server","installationDate":null,"ipAddress":"","isActive":false,"lastSuccessfulBackup":"2018-12-05T05:59:28.83Z","localHardDrives":"","manufacturer":"","modelNumber":"","numberOfProcessors":0,"osName":"","osVersion":"","partnerID":123,"physicalMemory":"","protectedDeviceName":"","psaRoleType":"","purchaseDate":null,"serialNumber":"","successfulBackupCount":0}]}

Последовательное обогащение кода:

<property name="messageType" scope="axis2" type="STRING" value="application/json"/>
<enrich>
    <source clone="false" property="OriginalMessage" type="property"/>
    <target type="body"/>
</enrich>

Трассировка стека: [2020-08-06 20:12:56,974] [-1234] [] [Thread-35] ERROR {org.apache.synapse.mediators.filters.FilterMediator} - Existing json payload is malformed. MessageID : ID:RMM-LT-998-65522-1596608596560-4:9:1:1:3 org.apache.synapse.commons.SynapseCommonsException: Existing json payload is malformed. MessageID : ID:RMM-LT-998-65522-1596608596560-4:9:1:1:3 at org.apache.synapse.commons.json.JsonUtil.removeChildrenFromPayloadBody(JsonUtil.java:701) at org.apache.synapse.commons.json.JsonUtil.getNewJsonPayload(JsonUtil.java:675) at org.apache.synapse.commons.json.JsonUtil.getNewJsonPayload(JsonUtil.java:787) at org.apache.synapse.mediators.elementary.Target.insertJson(Target.java:399) at org.apache.synapse.mediators.elementary.EnrichMediator.mediate(EnrichMediator.java:148) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:109) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71) at org.apache.synapse.mediators.filters.FilterMediator.mediate(FilterMediator.java:169) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:109) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71) at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158) at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:214) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:109) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71) at org.apache.synapse.config.xml.AnonymousListMediator.mediate(AnonymousListMediator.java:37) at org.apache.synapse.config.xml.SwitchCase.mediate(SwitchCase.java:69) at org.apache.synapse.mediators.filters.SwitchMediator.mediate(SwitchMediator.java:134) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:109) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71) at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158) at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:214) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:109) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71) at org.apache.synapse.config.xml.AnonymousListMediator.mediate(AnonymousListMediator.java:37) at org.apache.synapse.config.xml.SwitchCase.mediate(SwitchCase.java:69) at org.apache.synapse.mediators.filters.SwitchMediator.mediate(SwitchMediator.java:134) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:109) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71) at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158) at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectInbound(Axis2SynapseEnvironment.java:467) at org.wso2.carbon.inbound.endpoint.protocol.jms.JMSInjectHandler.invoke(JMSInjectHandler.java:255) at org.wso2.carbon.inbound.endpoint.protocol.jms.JMSPollingConsumer.poll(JMSPollingConsumer.java:297) at org.wso2.carbon.inbound.endpoint.protocol.jms.JMSPollingConsumer.execute(JMSPollingConsumer.java:204) at org.wso2.carbon.inbound.endpoint.protocol.jms.JMSTask.taskExecute(JMSTask.java:47) at org.wso2.carbon.inbound.endpoint.common.InboundRunner.run(InboundRunner.java:108) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.NullPointerException at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getDirectReader(OMSourcedElementImpl.java:224) at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.forceExpand(OMSourcedElementImpl.java:253) at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getChildren(OMSourcedElementImpl.java:862) at org.apache.synapse.commons.json.JsonUtil.removeIndentations(JsonUtil.java:458) at org.apache.synapse.commons.json.JsonUtil.removeIndentations(JsonUtil.java:466) at org.apache.synapse.commons.json.JsonUtil.removeIndentations(JsonUtil.java:466) at org.apache.synapse.commons.json.JsonUtil.removeChildrenFromPayloadBody(JsonUtil.java:696) ... 35 more

1 Ответ

0 голосов
/ 15 августа 2020

Я использовал следующую прокси-службу, чтобы попытаться воспроизвести проблему, которую вы наблюдали. Здесь я отправляю полезную нагрузку JSON, которую вы вложили в описание, в службу прокси. Полезные данные JSON затем сохраняются в свойстве OriginalMessage. Затем вызывается бэкэнд. После вызова серверной части с использованием посредника обогащения исходная полезная нагрузка затем обогащается до тела.

   <?xml version="1.0" encoding="UTF-8"?>
    <proxy xmlns="http://ws.apache.org/ns/synapse"
           name="sampleProxy"
           startOnLoad="true"
           statistics="disable"
           trace="disable"
           transports="http,https">
       <target>
          <inSequence>
             <log>
                <property expression="json-eval($)" name="OriginalMessage"/>
             </log>
             <property expression="json-eval($)" name="OriginalMessage"/>
             <call>
               <endpoint>
                 <address uri="http://localhost:8280/services/file_upload"/>
               </endpoint>
              </call>
             <log level="full"/>
             <property name="messageType"
                       scope="axis2"
                       type="STRING"
                       value="application/json"/>
             <enrich>
                <source clone="false" property="OriginalMessage" type="property"/>
                <target type="body"/>
             </enrich>
             <respond/>
          </inSequence>
       </target>
       <description/>
    </proxy>
                            

Здесь я не заметил никаких проблем с этим посредником. Это работало, как ожидалось.

  • Какую версию EI вы используете?
  • Как вы сохранили полезные данные JSON в посреднике свойств?
...