繁体   English   中英

在WSO2 API Manager 2.1.0中处理大型JSON有效负载

[英]Processing large JSON payload in WSO2 API Manager 2.1.0

我需要调用一个后端服务端点,该端点接受类型为application / json的请求。 这是一种直通API,调用前未实现任何逻辑。 我在JSON方法中有2000行的POST请求有效负载。

一次,我调用了API,它没有调用后端服务,而是尝试将有效载荷从JSON转换为XML,然后失败。

是API Manager的预期行为,它在调用后端服务之前在处理期间将所有JSON中的传入请求转换为XML。

同样,失败后,API进入暂停状态。

任何的意见都将会有帮助。

错误如下。

TID: [-1234] [] [2018-02-13 07:25:30,999]  WARN {org.apache.synapse.endpoints.EndpointContext} -  Suspending endpoint : AnonymousEndpoint with address http://localhost:{uri.var.portnum}/savepolicy/1.0 - current suspend duration is : 30000ms - Next retry after : Tue Feb 13 07:26:00 EET 2018 {org.apache.synapse.endpoints.EndpointContext}
TID: [-1234] [] [2018-02-13 07:25:30,999]  INFO {org.apache.synapse.mediators.builtin.LogMediator} -  STATUS = Executing default 'fault' sequence, ERROR_CODE = 101507, ERROR_MESSAGE = Error in Sender {org.apache.synapse.mediators.builtin.LogMediator}
TID: [-1234] [] [2018-02-13 07:25:31,000] ERROR {org.apache.synapse.commons.json.JsonUtil} -  #toXml. Could not convert JSON Stream to XML. Cannot handle JSON input. Error>>> null {org.apache.synapse.commons.json.JsonUtil}
TID: [-1234] [] [2018-02-13 07:25:31,000] ERROR {org.apache.synapse.transport.passthru.util.DeferredMessageBuilder} -  Error building message {org.apache.synapse.transport.passthru.util.DeferredMessageBuilder}
org.apache.axis2.AxisFault: Could not convert JSON Stream to XML. Cannot handle JSON input.
        at org.apache.synapse.commons.json.JsonUtil.toXml(JsonUtil.java:298)
        at org.apache.synapse.commons.json.JsonBuilder.processDocument(JsonBuilder.java:35)
        at org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocument(DeferredMessageBuilder.java:148)
        at org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:136)
        at org.apache.synapse.transport.passthru.util.RelayUtils.buildMessage(RelayUtils.java:99)
        at org.apache.synapse.mediators.AbstractListMediator.buildMessage(AbstractListMediator.java:140)
        at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:83)
        at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:59)
        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:97)
        at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:59)
        at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158)
        at org.apache.synapse.mediators.MediatorFaultHandler.onFault(MediatorFaultHandler.java:95)
        at org.apache.synapse.FaultHandler.handleFault(FaultHandler.java:53)
        at org.apache.synapse.endpoints.AbstractEndpoint.invokeNextFaultHandler(AbstractEndpoint.java:691)
        at org.apache.synapse.endpoints.AbstractEndpoint.onFault(AbstractEndpoint.java:530)
        at org.apache.synapse.endpoints.HTTPEndpoint.onFault(HTTPEndpoint.java:66)
        at org.apache.synapse.FaultHandler.handleFault(FaultHandler.java:101)
        at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:285)
        at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:188)
        at org.apache.synapse.transport.passthru.TargetErrorHandler$1.run(TargetErrorHandler.java:139)
        at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: javax.xml.stream.XMLStreamException
        at org.apache.synapse.commons.staxon.core.base.AbstractXMLStreamReader.initialize(AbstractXMLStreamReader.java:245)
        at org.apache.synapse.commons.staxon.core.json.JsonXMLStreamReader.<init>(JsonXMLStreamReader.java:66)
        at org.apache.synapse.commons.staxon.core.json.JsonXMLInputFactory.createXMLStreamReader(JsonXMLInputFactory.java:165)
        at org.apache.synapse.commons.json.JsonUtil.getReader(JsonUtil.java:333)
        at org.apache.synapse.commons.json.JsonUtil.getReader(JsonUtil.java:315)
        at org.apache.synapse.commons.json.JsonUtil.toXml(JsonUtil.java:294)
        ... 25 more

您是否可以尝试将<APIM_HOME> /repository/conf/axis2/axis2.xml文件中的默认JSON构建器和格式化程序对更改为以下内容:

<messageBuilder contentType="application/json" class="org.apache.axis2.json.JSONStreamBuilder>
<messageFormatter contentType="application/json" class="org.apache.axis2.json.JSONStreamFormatter”/>

更改后重新启动服务器。 https://docs.wso2.com/display/AM210/Transforming+API+Message+Payload#TransformingAPIMessagePayload-JSONmessagebuildersandformatters

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM