示例GWT 2.10应用在Jetty正常运行,部署到Tomcat 10.1后RPC异常
GWT RPC部署Tomcat失效问题解决
问题根源分析
你遇到的RPC功能失效,大概率是WAR包打包错误、Tomcat版本兼容性或WEB-INF资源缺失导致的,以下是具体排查和修复步骤:
1. 修正WAR包打包命令
你当前使用的jar cv * >../echo.war是错误的,重定向符号>会把jar命令的控制台输出写入文件,而非打包项目文件。正确的打包命令应为:
jar cvf ../echo.war *
重新生成WAR包后再部署测试。
2. 解决Tomcat版本兼容问题
Tomcat 10.1采用Jakarta EE规范(包名jakarta.servlet),而传统GWT 2.x版本依赖Java EE的javax.servlet包,两者不兼容会导致RPC Servlet无法加载。
两种解决方式:
- 降级Tomcat:改用Tomcat 9(基于Java EE 8,兼容
javax.servlet),无需修改项目代码,直接部署即可。 - 适配Jakarta规范:升级GWT到2.10+版本,在项目中替换依赖为
jakarta.servlet-api,并重新编译项目后打包。
3. 验证WEB-INF目录完整性
确保WAR包内的WEB-INF目录包含以下关键内容:
web.xml:必须正确配置RPC Servlet映射,示例配置如下:<servlet> <servlet-name>EchoService</servlet-name> <servlet-class>com.example.echo.server.EchoServiceImpl</servlet-class> </servlet> <servlet-mapping> <servlet-name>EchoService</servlet-name> <url-pattern>/echo/echoService</url-pattern> </servlet-mapping>classes目录:包含编译后的服务器端Java类(如EchoServiceImpl.class)lib目录:包含gwt-servlet.jar等GWT服务器端依赖包
4. 查看Tomcat日志定位细节
查看Tomcat安装目录下logs/catalina.out或localhost.*.log文件,日志中会记录RPC请求失败的具体原因(如类找不到、Servlet映射错误等),帮助精准定位问题。
内容的提问来源于stack exchange,提问作者mzattera
相关产品推荐
相关产品推荐

