Несколько дней назад мы перешли на WSO2 Enterprise Integrator версии 6.1.1-update24, и службы с входной полезной нагрузкой JSON с массивом теперь получают следующую ошибку:
TID: [-1234] [] [2018-10-22 15: 45: 11,954] ОШИБКА {org.apache.synapse.commons.json.JsonUtil} - #toXml.Не удалось преобразовать поток JSON в XML.Не удается обработать ввод JSON.Ошибка >>> null {org.apache.synapse.commons.json.JsonUtil} TID: [-1234] [] [2018-10-22 15: 45: 11,954] ОШИБКА {org.apache.synapse.mediators.transform.PayloadFactoryMediator} - Ошибка при преобразовании JSON в XML, проверьте, чтобы выражения JSON Path возвращали действительный JSON: {org.apache.synapse.mediators.transform.PayloadFactoryMediator} TID: [-1234] [] [2018-10-22 15:45:11,954] ОШИБКА {API_LOGGER.UtilityAPI} - Ошибка преобразования JSON в XML. Проверьте, что выражения JSON Path возвращают допустимый JSON: {API_LOGGER.UtilityAPI} TID: [-1234] [] [2018-10-22 15: 45: 11,974]ОШИБКА {org.apache.synapse.mediators.builtin.LogMediator} - Кому: / utility / testjsonarray, MessageID: urn: uuid: 7bebe318-ff20-4126-8c1b-99600b6c276e, Направление: запрос, последовательность = genericAPIFault, error_message = ошибкаJSON в XML, проверьте, что выражения JSON Path возвращают допустимый JSON:, error_code = 0, error_detail = org.apache.synapse.SynapseException: Ошибка при преобразовании JSON в XML, проверьте, чтобы выражения JSON Path возвращали действительный JSON: в org.apache.synapse.mediators.AbstractMediator.handleException (AbstractMediator.java:327) в org.apache.synapse.mediators.transform.PayloadFactoryMediator.replace (PayloadFactoryMediator.java:293) в org.apache.s.transform.PayloadFactoryMediator.regexTransform (PayloadFactoryMediator.java:212) при org.apache.synapse.mediators.transform.PayloadFactoryMediator.mediate (PayloadFactoryMediator.java:154) в org.apache.synapse.mediators.transform.PayloadFactoryMediator.mediate (PayloadFactoryMediator.java: 104) в org.apache.synapse.mediators.AbstractListMediator.mediate (AbstractListMediator.java:108) в org.apache.synapse.mediators.AbstractListMediator.mediate (AbstractListMediator.java:70) в org.apache.synsemediators.base.SequenceMediator.mediate (SequenceMediator.java:158) в org.apache.synapse.mediators.base.SequenceMediator.mediate (SequenceMediator.java:214) в org.apache.synapse.mediators.AbstractListMediistMediate.mediateJava: 108) в org.apache.synapse.mediators.AbstractListMediator.mediate (AbstractListMediator.java:70) в org.apache.synapse.mediators.base.SequenceMediator.mediate (SequenceMediator.java:158) в org.apache.synapse.rest.Resource.process (Resource.Java: 351) в org.apache.synapse.rest.API.process (API.java:399) в org.apache.synapse.rest.RESTRequestHandler.apiProcess (RESTRequestHandler.java:123) в org.apache.synapse.rest.RESTRequestHandler.) в org.apache.synapse.core.axis2.SynapseMessageReceiver.receive (SynapseMessageReceiver.java:92) в org.apache.axis2.engine.AxisEngine.receive (AxisEngine.java:180) в org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler (ServerWorker.java:331) в org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest (ServerWorker.java:377) в org.apache.synapse.transport.passthru.ServerWorker.run (ServerWorker.java:149) в org.apache.axis2.transport.base.threads.NativeWorkerPool $ 1.run (NativeWorkerPool.jpg)) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142)в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) в java.lang.Thread.run (Thread.java:748)
Чтобы воспроизвести эту ошибку изНа консоли углерода создайте API REST со следующим ресурсом API:
<?xml version="1.0" encoding="UTF-8"?>
<api context="/utility" name="UtilityAPI" xmlns="http://ws.apache.org/ns/synapse">
<resource methods="POST" url-mapping="/testjsonarray">
<inSequence>
<sequence key="inTestJsonArraySeq"/>
</inSequence>
<outSequence/>
<faultSequence/>
</resource>
</api>
, затем добавьте следующую последовательность inSequence:
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="inTestJsonArraySeq" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
<log description="logInTest">
<property name="sequence" value="inTestJsonArraySeq"/>
</log>
<payloadFactory description="pfJsonArrary" media-type="xml">
<format>
<myPayload xmlns="">$1</myPayload>
</format>
<args>
<arg evaluator="json" expression="$.myArray"/>
</args>
</payloadFactory>
<respond description="respOut"/>
</sequence>
Вызовите API REST со следующей полезной нагрузкой JSON:
{
"myArray" : ["element1", "element2", "element3"]
}
ПРИМЕЧАНИЕ1 : В WSO2 Enterprise Integrator v6.1.1 (без обновления) мы не видим эту ошибку, ответ от конечной точки для вышеуказанной полезной нагрузки является ожидаемым:
<myPayload>
<jsonElement>element1</jsonElement>
<jsonElement>element2</jsonElement>
<jsonElement>element3</jsonElement>
</myPayload>
Изучая класс, который выдает ошибку, мы заметили изменение версии библиотеки synapse-commons_2.1.7.wso2v15.jar (из WSO2EI v6.1.1) в synapse-commons_2.1.7.wso2v44.jar (из WSO2v6.1.1-update24) в папке {WSO2EI_HOME} / wso2 / components / plugins /.Это может быть подсказкой для вас, ребята из WSO2.