Tomcat:“ webapps /”文件夹和“ webapps / ROOT /”文件夹之间的区别

时间:2019-03-20 22:39:06

标签: java tomcat path reload

我注意到这些文件夹具有非常不同的属性。我最近在webapps文件夹下部署了一个.war文件。我注意到,一旦部署了.war文件,该项目的未压缩版本就会添加到该目录中。当我尝试修改未压缩版本中的任何文件时,Tomcat服务器不会更改应用程序的行为(通过Web浏览器运行应用程序时,看不到更改)。但是,如果我将同一项目放在webapps / ROOT下,则我的应用程序中的更改将导致我的应用程序的行为发生瞬时变化(可以通过浏览器看到)。

这是另一个例子。我目前在某些应用程序上遇到HTTP 415错误。当我使用文件夹webapps下的.war文件部署它时,出现该错误。但是,如果将应用程序的未压缩版本放在webapps / ROOT下,该错误就会消失并且我的应用程序可以正常运行。

这使我想到了我的问题。这两个文件夹有何不同?什么能解释这些文件夹之间的差异?

1 个答案:

答案 0 :(得分:0)

尝试了不同的方法之后,这就是我发现的东西:

我意识到文件夹webapps是定义为服务器的“ appBase”的文件夹。 (可以在conf文件夹中的server.xml文件中配置此变量,该文件从apache tomcat的根文件中可见)。换句话说,它用作Tomcat搜索应用程序的直接位置。

但是,没有告诉我们Tomcat没有进入文件夹。这就是为什么我的Web应用程序可以在webapps下而不是ROOT下得到更新并收到错误的原因。我知道这一点是因为我将'appBase'变量直接更改为我的应用程序所在的位置,突然它们显示了来自Tomcat的错误。

如果在“ appBase”定义的路径下对Web应用程序进行了更改,则需要以特定方式重新加载它们。一种是使用Tomcat Manager功能,另一种是删除工作文件夹中的文件(可从您的主Apache Tomcat文件夹中找到。请继续单击工作文件夹中的文件夹,直到到达Web应用程序的主文件夹为止)。 Tomcat Manager功能的实现可能是一项比较繁琐的任务,因为需要了解如何为用户配置tomcat(在conf文件夹下的tomcat-users.xml中),并且有关此操作的文档受到限制。第二种解决方案是删除工作文件夹下的Web应用程序,该解决方案可以在tomcat运行时完成,并会立即实现您的更改。

更多详细信息可在另一篇Stack Overflow帖子中找到:How to force tomcat to reload recently compiled class/war files