【问题标题】:REST API : Issues using Aggregate and Iterate MediatorREST API:使用 Aggregate 和 Iterate Mediator 的问题
【发布时间】:2013-06-04 07:23:06
【问题描述】:

错误信息: [2013-06-04 11:26:41,039] INFO - LogMediator To:http://www.w3.org/2005/08/addressing/anonymous,WSAction:,SOAPAction:,MessageID:urn:uuid:fce9fc4f-a071-4f62-8b5f-e982cf404619,方向:响应,信封:不是 GZIP 格式 [2013-06-04 11:26:41,055] 错误 - AggregateMediator 错误评估表达式:/PACKAGE_OFFERS org.apache.synapse.SynapseException:找不到要聚合的匹配元素。 在 org.apache.synapse.mediators.eip.EIPUtils.enrichEnvelope(EIPUtils.java:149) 在 org.apache.synapse.mediators.eip.aggregator.AggregateMediator.getAggregatedMessage(AggregateMediator.java:393) 在 org.apache.synapse.mediators.eip.aggregator.AggregateMediator.completeAggregate(AggregateMediator.java:340) 在 org.apache.synapse.mediators.eip.aggregator.AggregateMediator.mediate(AggregateMediator.java:285) 在 org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71) 在 org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:114) 在 org.apache.synapse.rest.Resource.process(Resource.java:297) 在 org.apache.synapse.rest.API.process(API.java:265) 在 org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:76) 在 org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:50) 在 org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:182) 在 org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:443) 在 org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:166) 在 org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) 在 org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:217) 在 org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:722) [2013-06-04 11:27:21,022] 警告 - 读取请求后 SourceHandler 连接超时:fe80:0:0:0:b1ac:716:923:abd3%33:61567->fe80:0:0: 0:b1ac:716:923:abd3%33:8280

我有一个 REST API 调用两个 DataServer 服务 DS-1 和 DS-2,在调用 DS-1[XML over REST-GET] 之后,我对一些重复元素执行迭代并调用 DS-2 [XML over REST-GET]。这样做我得到上面列出的错误。我正在尝试获取正确的元素。如果需要任何其他配置,请告诉我。

源代码请参考 LINK.

【问题讨论】:

    标签: rest wso2 wso2esb wso2dss


    【解决方案1】:

    您使用接收序列。因此,第一个端点的结果(响应)将按该序列接收(即:迭代序列)。之后没有接收序列。消息流中断。您在初始序列中使用了聚合,这没有任何意义,因为来自第一个端点的响应将在 iterate-seq 处收到。

    因此,聚合将针对您发送到 API 的初始请求进行。

    【讨论】:

    • ##您在初始序列中使用了聚合它的响应应该被 捕获。您是否建议明确设置 。我从博客dakshithar.blogspot.in/2012/07/… 中获得灵感。唯一的区别是它使用 SOAP 而我是在 REST 上做的。谢谢你的回复。。
    【解决方案2】:

    您能否尝试在关闭<inSequence> 之前添加<send/> 调解器,如下所述。

                </case>
                <default/>
            </switch>
    **<send/>**
        </inSequence>
    

    这将确保 outSequence 收到您的请求。

    【讨论】:

      【解决方案3】:

      如果您还没有决定使用任何 esb……请考虑 UltraESB

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-12
        • 1970-01-01
        • 2020-08-17
        相关资源
        最近更新 更多