gpt4 book ai didi

tomcat - Camel 更新到 2.17.1 导致 Servlet 出现 404

转载 作者:行者123 更新时间:2023-11-28 22:50:26 31 4
gpt4 key购买 nike

我将 Camel 与 Tomcat 和 Spring 一起使用。我使用的是 Camel 2.15.0 并更新到 2.17.1。我没有对我的 web.xml 进行任何其他更改,但现在我运行以命中端点(在 Tomcat 容器中运行)的测试得到 404。Tomcat 日志仅显示 “POST/HTTP/1.1”404。 Camel 2.17 处理 Servlet 组件的方式有什么不同吗?

我的 web.xml:

 <!-- Camel servlet -->
<servlet>
<servlet-name>http-ingest</servlet-name>
<servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<!-- Camel servlet mapping -->
<servlet-mapping>
<servlet-name>http-ingest</servlet-name>
<url-pattern></url-pattern>
</servlet-mapping>

我的 RouteBuilder:

from("servlet://*?servletName=http=ingest")
...

更新

所以我做了一些回归测试,我编译了我的项目的旧版本,它使用 camel 2.15.0,我的 HTTPS 测试工作正常。然后我所做的唯一更改是将 camel 版本更新为 2.17.1,重新编译、部署并重新运行测试。在 2.17.1 中,我得到了 404。同样,除了在我的 pom 中更改 Camel 版本之外,我没有做任何其他更改。

最佳答案

好的,所以我在这上面花了一点时间,发现有一些与 CamelHttpTransportServlet 相关的提交在 2.15.x 分支和2.17.x 分支。这些与第 44 行有关(参见引用资料 1)。不幸的是,我们似乎无法注入(inject)不同的策略。默认策略似乎支持新的 HttpRestServletResolveConsumerStrategy 中定义的新 REST DSL 样式。

当我阅读 HttpRestServletResolveConsumerStrategy 实现时,我看到一些可能需要进一步文档的内容可能会导致问题。例如,新策略期望 request.getPathInfo() 的返回值是非空的(参见引用资料 2 第 36 行)。此外,此策略依赖于检查路径中的通配符的 RestConsumerContextPathMatcher(引用 3)。

此外,当我查看文档和源代码时,一切(包括文档和代码)似乎都假定 servlet 部署为 war ,而不是应用程序服务器中的根。我不认为这有什么大不了的,但我想知道你的 server.xml 配置是如何设置的,以在你部署到 root 时映射你的 war 。

绝对看起来像一个模糊的问题。 :)

希望这些对您有所帮助!

引用资料:

  1. https://github.com/apache/camel/blob/master/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/CamelHttpTransportServlet.java
  2. https://github.com/apache/camel/blob/555627d49e48df00f325ec05f382b79415cadffc/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpRestServletResolveConsumerStrategy.java
  3. https://github.com/apache/camel/commit/a90d28d1c48594bf3f1765a5dbe34c07f99a9960
  4. Tomcat8 use the app as ROOT.war

关于tomcat - Camel 更新到 2.17.1 导致 Servlet 出现 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41701335/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com