Java Tomcat没有自动部署war文件

Java Tomcat没有自动部署war文件,java,tomcat,jakarta-ee,war,Java,Tomcat,Jakarta Ee,War,我遵循以下步骤 关闭Tomcat 部署了一个时间戳为12月1日的war文件 启动Tomcat-这为部署的war文件创建了分解目录 阻止雄猫 用时间戳为12月3日的新文件更新了war文件 重新启动Tomcat 我发现当我重新启动Tomcat时,先前展开的文件夹中的现有文件没有更新。war文件的更新不应该更新相关的jsp类文件吗 我看了一下文档,发现了这个。“自动应用程序部署”下的以下引用 除了自动 启动时发生的部署 时间,你也可以要求新的 XML配置文件,WAR 文件或子目录 进入appBas

我遵循以下步骤

  • 关闭Tomcat
  • 部署了一个时间戳为12月1日的war文件
  • 启动Tomcat-这为部署的war文件创建了分解目录
  • 阻止雄猫
  • 用时间戳为12月3日的新文件更新了war文件
  • 重新启动Tomcat
我发现当我重新启动Tomcat时,先前展开的文件夹中的现有文件没有更新。war文件的更新不应该更新相关的jsp类文件吗

我看了一下文档,发现了这个。“自动应用程序部署”下的以下引用

除了自动 启动时发生的部署 时间,你也可以要求新的 XML配置文件,WAR 文件或子目录 进入appBase(或
$CATALINA_HOME/conf/[engine_name]/[host_name] 在XML配置的情况下 当Tomcat运行时,文件)目录 运行将自动停止 根据规则部署 如上所述。自动部署器 还将跟踪以下方面的web应用程序: 以下更改:

  • WEB-INF/WEB.xml的更新 文件将触发重新加载web 应用
  • 对战争的更新 已扩展的将触发 取消部署(删除 扩展的webapp),然后是 部署
  • 对XML的更新 配置文件将触发 取消部署(不移除任何 扩展目录),然后是 相关web应用程序的部署 应用
文件是否应根据上述第2点自动更新

在server.xml中,Autodeploy设置为true


是的,应该更新分解的目录,但是您不需要停止Tomcat即可使其工作-它将在Tomcat运行时工作。你能在不停止Tomcat的情况下再试一次吗


此外,我还使用内置的管理器应用程序,它允许我在域中的任何位置更新war文件,而无需使用root(或apache或运行tomcat的任何组件)。这非常方便,可以内置到Ant脚本中。

从历史上看,tomcat从来没有在放入新jar时更新过分解的目录,至少对我来说是这样。我一直认为这是一个bug,但从来没有研究过它,因为有一个简单的解决方案。这两种方法都可以很好地工作:
  • 使用内置管理器应用程序部署war文件。如果您同意使用GUI进行生产管理,则可以。请注意,如果您多次部署此工具,它通常会出现问题(同样,我从未深入研究过细节),但是Tomcat重新启动工作正常

  • 停止、删除和删除。停止Tomcat,删除分解的目录,放入新的war文件。
  • 我通常将server.xml中的autodeploy设置为false。这允许我删除新的war并重新启动tomcat,而无需处理相应的目录。

    Add autoDeploy=true。为我工作

    <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
    

    在我的例子中,我命名工件

    ROOT.WAR
    
    但应该是

    ROOT.war
    

    干杯

    当我使用maven在ubuntu框内的tomcat中生成构建时,我有一个名为

    install_wars.sh

    内容如下:

    mvn clean install
    service tomcat7 stop
    find /var/lib/tomcat7/webapps/ -mindepth 1 -maxdepth 1 -type d -exec rm -rf {} \;
    find . -name *.war -exec cp {} /var/lib/tomcat7/webapps/ \;
    service tomcat7 start
    
    您可能需要相应地更改path和maven命令


    tomcat停止/启动是为了避免在多次重新部署后导致应用程序运行缓慢的内存泄漏。

    我们没有在生产环境中安装manager或admin应用程序,因此这一切都是通过脚本完成的。我同意应该更新分解的文件夹。我想知道我关闭tomcat的事实是否会导致这种情况。我采用了第二种解决方案,只需编写一个脚本即可。我使用了第二种方法,但没有删除分解的目录。这就是不起作用的地方:0Tomcat用以下段落解释了这一点:“应用程序库(appBase)目录中没有同名对应目录(没有扩展名“.war”)的任何web应用程序存档文件”将自动展开,除非unpackWARs属性设置为false。如果重新部署更新的WAR文件,请确保在重新启动Tomcat时删除展开的目录,以便重新展开更新的WAR文件(请注意,如果启用自动部署程序,则在删除以前扩展的目录后,将自动扩展更新的WAR文件)。”问题是,当您在生产环境中时,重新启动应用程序服务器并不容易,特别是如果其他应用程序在该服务器instanceLook下像XML元素一样运行。应该将其添加到哪个文件中?编辑tomcat conf目录中的server.XML,这就是tomcat默认拥有它的时间