【问题标题】:When running a Camel app inside Tomcat I get a ClassCastException on the CamelServlet implementation在 Tomcat 中运行 Camel 应用程序时,我在 CamelServlet 实现上收到 ClassCastException
【发布时间】:2021-08-26 19:33:55
【问题描述】:

我有一个使用 servlet 公开 REST API 的 Camel 应用程序。我在 Camel 旁边使用 SpringBoot。构建 WAR 后,我可以使用 java -jar 运行它,它工作正常。现在,当我将相同的 WAR 部署到 tomcat/webapps 时,我在日志中收到以下错误:

    java.lang.ClassCastException: class org.apache.camel.component.servlet.CamelHttpTransportServlet cannot be cast to class jakarta.servlet.Servlet (org.apache.camel.component.servlet.CamelHttpTransportServlet is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @4f2613d1; jakarta.servlet.Servlet is in unnamed module of loader java.net.URLClassLoader @520a3426)

这是我的 web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

  <servlet>
    <servlet-name>CamelServlet</servlet-name>
    <servlet-class>
        org.apache.camel.component.servlet.CamelHttpTransportServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet>
    <servlet-name>SpringApplicationContext</servlet-name>
    <servlet-class>
        org.springframework.web.context.ContextLoaderServlet
    </servlet-class>
    <load-on-startup>2</load-on-startup>
  </servlet>
  <!-- Camel servlet mapping -->
  <servlet-mapping>
    <servlet-name>CamelServlet</servlet-name>
    <url-pattern>/srv/*</url-pattern>
  </servlet-mapping>
</web-app>

我正在使用 Tomcat 10.0.10 和 Camel 3.8

感谢任何帮助。

【问题讨论】:

标签: java spring-boot tomcat apache-camel


【解决方案1】:

使用 Tomcat 9 解决了这个问题

【讨论】:

    猜你喜欢
    • 2014-04-20
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多