在 Tomcat 中部署的 War 没有显示在 URL 上,而是显示 404

在 Tomcat 中部署的 War 没有显示在 URL 上,而是显示 404

我有一个 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。

相关内容