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

Docker容器中Tomcat部署JavaEE应用出现404错误求助

JavaEE容器化后/login路径404问题排查

问题概述

  • MySQL容器运行正常,应用容器日志显示已成功连接数据库
  • 访问http://localhost:8080/可正常加载首页,但访问http://localhost:8080/login时返回404错误,错误提示:

    The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

  • 本地非容器化运行时功能完全正常,且已确认应用容器处于运行状态

排查建议

1. 检查应用上下文路径

容器化部署时,应用服务器(如Tomcat)可能默认使用WAR包名称作为上下文路径。如果你的WAR包名称不是ROOT,那么访问登录页的路径应该是http://localhost:8080/[WAR包名称]/login。可通过查看容器内应用服务器的部署目录,确认WAR包的部署名称。

2. 验证WAR包完整性

对比本地运行的项目文件和容器内部署的WAR包内容,确认login.html(或对应的登录页面资源)、相关Servlet配置文件(如web.xml)是否被正确打包进WAR包。容器化部署时,若打包脚本遗漏了静态资源或配置文件,会导致路径无法匹配。

3. 核对Servlet映射配置

检查登录功能对应的Servlet注解或web.xml中的映射规则:

  • 若使用注解,确认是否存在@WebServlet("/login")或类似的路径映射
  • 若使用web.xml,确认<servlet-mapping>中是否正确配置了/login的映射路径

4. 检查应用服务器配置差异

对比本地和容器中应用服务器(如Tomcat)的版本及核心配置:

  • 容器中的服务器是否启用了路径重写、安全限制等规则,导致/login路径被拦截
  • 静态资源的处理配置是否一致,比如容器中是否禁用了直接访问HTML文件的规则

5. 确认端口与路由配置

再次验证容器端口映射命令,确保宿主机器的8080端口正确映射到容器的8080端口,且没有其他进程占用该端口导致请求无法正确转发到应用容器。

内容的提问来源于stack exchange,提问作者Matvey Androsyuk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 05:15:39