无法让 API 在 WSO2ESB 4.8.1 下工作

Can't get API working under WSO2ESB 4.8.1

我已经通过WSO2ESB的管理控制台添加了"API",非常简单的一个:

<api xmlns="http://ws.apache.org/ns/synapse" name="getmessage" context="/newservices">
   <resource methods="GET" url-mapping="/getmessage">
      <inSequence>
         ....
         <log level="full"></log>
      </inSequence>
      <outSequence>
         <send></send>
      </outSequence>
   </resource>
</api>

由于日志中介,我看到消息记录在 inSequence 的末尾,但无法得到任何回复。错误日志为空。知道如何接收吗?

此外,我还注意到一些非常奇怪的事情:

  1. 即使我在请求中指定了错误的上下文(/qwerty 而不是 /newservices) - 这样的请求无论如何都会被记录下来,就像它正在通过一样 这个顺序
  2. 为 "api" 更改设置 "port" 属性 没什么,它甚至不听指定的端口

如有任何线索,我们将不胜感激。

UPD

按照Jean-Michel提供的提示,我找到了一个参数组合,使它最终起作用:

<property name="messageType" value="application/xml" scope="axis2"></property>
<property name="RESPONSE" value="true" scope="default"></property>
<property name="NO_ENTITY_BODY" scope="axis2" action="remove"></property>
<property name="HTTP_SC" value="200" scope="axis2"></property>

我不清楚为什么,但只有所有这些一起使用才迫使 API 到 return 响应主体。

在 inSequence 内部,您不会向端点发送任何内容,因此您不会收到任何响应:您的 outSequence 永远不会执行。如果你想发回一个 ACK​​,你可以在 inSequence 中设置这个 属性 来发送 http satus code 202 :

<property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>

当你向ESB发送东西时,如果没有服务来处理消息,默认执行主序列,在主序列中,你会发现<log level="full">