我们在WSO2 ESB上有一组REST API。如果我们的.car是唯一部署的,我们的API会按预期响应。但是,我们与多个团队共享一个分区。当我们将.car文件与其他.car文件一起部署时,无论是在本地还是在云上,我们的API似乎都没有部署。任何对他们的调用都会引发一个未找到的API" 404.
我们这两天都有多套眼睛,但到目前为止还没有骰子。在发布此问题之前我们尝试了什么:
有没有人见过这个?如果是这样,决议是什么?
答案 0 :(得分:1)
我们了解到WSO2 ESB中有一个怪癖如下:
如果另一个Synapse API配置文件的上下文与Synapse API配置上下文的一部分匹配,则WSO2 ESB可能找不到您的API。行为似乎不一致,但确实发生了。
例如,假设这两个Synapse API上下文都存在于同一个分区中:
<api xmlns="http://ws.apache.org/ns/synapse" name="API_THEIRS" context="/foo/bar/">
<api xmlns="http://ws.apache.org/ns/synapse" name="API_MINE" context="/foo/bar/bat">
在这种情况下,ESB可能永远不会找到API_MINE中定义的API,因为当请求进入&#34; / foo / bar / {anything}&#34;它将在API_THEIRS中查找匹配的资源。如果资源不在那里,ESB会抛出一个未找到的API&#34;错误。
这就是发生在我们身上的事。其中一个团队的上下文路径与我们路径中的前几个步骤相匹配,因此ESB在那里寻找我们的资源。