我在此处的 Tomcat 指南和一些 SO 问题上阅读了有关此内容的信息。而且我认为我几乎在做同样的事情。但在某种程度上无法成功。
首先,我必须说我的应用程序部署在我无法控制的共享 Tomcat 服务器上。我只是删除了我的 .war 文件,然后它就被部署了。
我试图将我的应用程序打包为 ROOT.war 但没有用。管理员告诉我将它打包为我想要的任何名称,他们会处理它。我将它打包为 my-application.war 并且它已部署但我必须输入 http://my-host/my-application 访问网站。
在联系管理员后,他们告诉我他们已经在我的主机中的 Tomcat 配置文件中放置了一个上下文元素,例如:
<Context path="" docBase="path of my-application deployed folder"/>
这应该将 my-application 设置为所有到达 my-host
的请求的默认应用程序。但它没有,每当我输入 http://my-host 我得到:
HTTP Status 404 - / The requested resource (/) is not available
但是当我再次输入 http://my-host/my-application 时,一切正常。任何关于可能出错的建议都绝对值得赞赏。
更新:我尝试按照 tomcat 文档中描述的有关如何使应用程序默认的步骤进行操作。描述了 3 种方法,我尝试了所有三种方法,并且可以成功地将我的应用程序部署为 localhost 上的 ROOT。
我还尝试重现我在远程服务器上面临的问题,以便找到原因并将其报告给管理员。我发现了几个问题。
无论哪种方式,我都无法准确指出阻止 ROOT.war 部署的原因,因为这需要访问 Tomcat 日志文件和 conf 文件来检查我上面描述的情况。
同样从我看到的所有内容来看,我的管理员似乎无法维护 Tomcat 服务器并发现问题。因此,在与共享服务器苦苦挣扎后,我决定使用专用的 Tomcat 服务器。
在您的问题中,您声明管理员将上下文设置为:
<Context path="" docBase="path of my-application deployed folder"/>
根据上面的评论,我建议尝试使用应用程序的相对路径而不是绝对路径。
我在我的 tomcat 服务器上试过这个:
<Context path="/" docBase="my-application/" />
这就是诀窍。
包含 Context 元素的 Host 元素确实设置了一些可能也会影响上下文的参数。如果它是默认设置,那么相对上下文应该只是指向 webapps 文件夹。如果已更改,结果可能会有所不同。