我有一个 Web 应用程序,Tomcat 说它已经部署,但是当我转到其 URL 时,出现 404 错误。
war 文件名为 sonar.war,部署在 WebApps 中。我可以从日志中看到它正在部署(如果我删除所有表并重新启动 Tomcat,它还将重新创建其数据库表),并且通过使用 JConsole,我可以看到它Mbeans->Catalina->Host->Localhost->Attributes->children
作为 webmodule 存在。
同一台机器上还有 hudson.war,它运行良好——我确信我连接到了正确的机器,因为我可以删除 hudson.war,并且 Hudson 会从 URL 中消失。
日志中没有任何内容;我尝试更改日志级别以包含更多信息,但仍然什么也看不到。
有什么想法/建议吗?如果有必要,我很乐意将调试器附加到 Tomcat 实例,以尝试找出正在发生的事情,但我不确定入口点是什么,因此,如果能提供指向我可能想要设置断点的位置的指针,我将不胜感激。
我用的是Tomcat 6,Tomcat前面什么都没有(比如Apache)。
答案1
使用管理器应用程序设置服务器并在其中部署 war。管理器将向您显示它部署到的 URL 路径。您可以在真实的 Tomcat 服务器上尝试该路径。
对于测试部署,我保留了管理器应用程序,以便更容易解决此类问题。该应用程序也可能正在部署,但存在其他问题,导致其无法绑定到其上下文。
答案2
现在压力已经消失,我可以做一些调查了。CATALINA_HOME/conf 文件夹中缺少以下文件:
- 网页文件
- 上下文.xml
我认为 Sonar 的配置意味着 Tomcat 无法应对这些丢失的文件,而 Hudson 则在其他地方包含了这些信息。
答案3
可能存在 TOMCAT 版本兼容性问题
我最近也遇到了类似的问题。经过 3 天的痛苦经历后,我意识到 Apache Tomcat (9.x) 版本与我的 Web 应用程序不兼容。我不得不升级到 Apache Tomcat 10.x。