首页 文章

wso2 esb“api not found”当汽车与其他人一起分配时

提问于
浏览
-2

我们在WSO2 ESB上有一组REST API . 如果我们的.car是唯一部署的,我们的API会按预期响应 . 但是,我们与多个团队共享一个分区 . 当我们将.car文件与其他.car文件一起部署时,无论是在本地还是在 Cloud 上,我们的API似乎都没有部署 . 对他们的任何调用都会抛出“未找到API”404 .

这两天我们已经有多套眼睛,但到目前为止还没有骰子 . 在发布此问题之前我们尝试了什么:

  • 检查Jenkins日志以确保构建正常

  • 检查Splunk中的服务器日志以确保部署成功

  • 仔细检查以确保 endpoints 正确

  • 确保网址中没有拼写错误

  • 从工件xml文件中删除了注释

  • 执行干净的构建和安装,以防万一

  • 从分区下载所有.car文件并将它们安装在开发人员的计算机上,并在localhost上运行它们 . 只要所有的.car文件都在那里,我们就可以重现这个问题,但是当我们自己运行.car时,问题就消失了,而且API运行良好 .

有没有人见过这个?如果是这样,决议是什么?

1 回答

  • 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,因为当请求进入“/ foo / bar / ”时,它将在API_THEIRS中查找匹配的资源 . 如果资源不存在,ESB将抛出“未找到API”错误 .

    这就是发生在我们身上的事 . 其中一个团队的上下文路径与我们路径中的前几个步骤相匹配,因此ESB在那里寻找我们的资源 .

相关问题