如何只部署tomcat中的特定项目?

How to deploy only a specific project in tomcat?

我通过在自定义文件夹中的 \conf\Catalina\localhost\ 和 .war 文件中添加上下文文件,在同一个 tomcat 服务器中设置了很多项目。实际上一切正常,但我必须同时 运行 所有项目。或者通过从 localhost 目录中删除所有上下文(并只添加我需要的一个),我可以只启动需要的一个。有没有办法将所有项目保存在同一个文件夹中,并告诉 tomcat 要加载哪个?

当从主机的 xmlBase 目录(在您的情况下为 \conf\Catalina\localhost)自动部署应用程序时 Tomcat 忽略 所有没有 .xml 扩展名。因此,您可以重命名所有文件以防止它们被部署。

但是,如果您想要部署所有项目,但不启动它们,您可以像 this question 中一样通过将 startChildren="false" 添加到您的主机来继续。

如果您选择第二种解决方案,启动您的应用程序会变得棘手:您需要在 server.xml 文件中配置 Tomcat 管理器,以便它随系统一起启动,然后您可以启动其他应用程序通过这。只需将 webapps/manager/META-INF/context.xml 的内容复制到 <Host> 元素中并添加 pathdocBase 属性:

<Host>
  <Context path="/manager" docBase="${catalina.home}/webapps/manager" antiResourceLocking="false" privileged="true" >
    <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
                     sameSiteCookies="strict" />
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
           allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
    <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter$LruCache(?:$1)?|java\.util\.(?:Linked)?HashMap"/>
  </Context>
  ...
</Host>