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

问题描述 投票:0回答:1

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

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

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

java tomcat path reload
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.