You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

示例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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 09:02:29