当 运行 一个 Camel 应用程序在 Tomcat 中时,我在 CamelServlet 实现上得到一个 ClassCastException
When running a Camel app inside Tomcat I get a ClassCastException on the CamelServlet implementation
我有一个使用 servlet 公开 REST 的 Camel 应用程序 API。我正在使用 SpringBoot 和 Camel。在构建 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
感谢任何帮助。
使用 Tomcat 9 解决了问题
我有一个使用 servlet 公开 REST 的 Camel 应用程序 API。我正在使用 SpringBoot 和 Camel。在构建 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
感谢任何帮助。
使用 Tomcat 9 解决了问题