【问题标题】:Deploying .war in Tomcat在 Tomcat 中部署 .war
【发布时间】:2014-07-28 14:56:49
【问题描述】:

我正在阅读“Java Webservices: Up and Running”来学习我的 OCE WSD 认证。我安装了 Apache Tomcat 7.0.54 并且能够在 localhost:8080 查看 Tomcat 主页。我在上述书籍的第 1 章中,并且已经构建了我的第一个项目,其中 .war 部署到 ..\apache-tomcat-7.0.54\webapps\MyWebservice.war。我安装了 CURL 来尝试简单的 ping...

curl -v http://localhost:8080/predictions/

我收到 404 错误:未找到。我在使用我的网络浏览器查看相同的 URL 时也得到了这个。我认为由于我的 .war 文件已部署到我的 apache tomcat 'webapps' 文件夹中,因此只需启动 Tomcat 服务器即可获取该 .war 文件并启动 web 服务。任何想法我可能做错了什么或我可能错过了启动我的网络服务的步骤?

编辑解决方案:

curl -v http://localhost:8080/MyWebservice/

【问题讨论】:

    标签: java web-services tomcat


    【解决方案1】:

    检查 web.xml 中提到的应用程序的名称。

    如果 web.xml 不存在,则应用程序的名称将是战争的名称。

    Tomcat 维护层次结构,其中 servlet 属于应用程序的范围。

    尝试使用

    http://:8080/

    它应该给你一些回报。如果是,请尝试添加 servlet 名称。

    希望对你有帮助。

    【讨论】:

    • 我根据您的输入检查了 web.xml,但应用程序名称不存在。 “Java Webservices: Up and Running”一书中的教程希望用户输入.war 文件的名称作为提供的ant 构建的一部分。我采用了惰性方法并将该字段硬编码为“MyWebservice”,因此教程让我指向“预测”。上面贴出了解决方案,感谢您的帮助!
    【解决方案2】:

    您可能想要http://localhost:8080/MyWebservice/predictions/,因为 Tomcat 部署的 War 文件的上下文名称与您使用的 War 文件相同。

    【讨论】:

    • ...除非您在 context.xml 文件中指定特定的上下文名称,这是更常见的情况。