Enrich Mediatior 抛出 json 格式错误
Enrich Mediatior throwing json malformed Error
WSO2 中的 Enrich mediator 总是失败,json 来自突触公地 JSONUtil class 的畸形预期
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
我已使用以下代理服务尝试重现您观察到的问题。在这里,我将您在描述中附加的 JSON 有效载荷发送到代理服务。然后 JSON 有效负载存储在 属性 OriginalMessage 中。然后调用后端。在使用 enrich mediator 调用后端后,原始有效负载将被丰富到正文中。
<?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 有效负载存储到 属性 中介的?
WSO2 中的 Enrich mediator 总是失败,json 来自突触公地 JSONUtil class 的畸形预期
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
我已使用以下代理服务尝试重现您观察到的问题。在这里,我将您在描述中附加的 JSON 有效载荷发送到代理服务。然后 JSON 有效负载存储在 属性 OriginalMessage 中。然后调用后端。在使用 enrich mediator 调用后端后,原始有效负载将被丰富到正文中。
<?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 有效负载存储到 属性 中介的?