无法让 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 的末尾,但无法得到任何回复。错误日志为空。知道如何接收吗?
此外,我还注意到一些非常奇怪的事情:
- 即使我在请求中指定了错误的上下文(/qwerty 而不是
/newservices) - 这样的请求无论如何都会被记录下来,就像它正在通过一样
这个顺序
- 为 "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">
我已经通过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 的末尾,但无法得到任何回复。错误日志为空。知道如何接收吗?
此外,我还注意到一些非常奇怪的事情:
- 即使我在请求中指定了错误的上下文(/qwerty 而不是 /newservices) - 这样的请求无论如何都会被记录下来,就像它正在通过一样 这个顺序
- 为 "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">