【问题标题】:Getting Tomcat to reload a web app with a static context让 Tomcat 使用静态上下文重新加载 Web 应用程序
【发布时间】:2011-04-25 22:52:28
【问题描述】:

我有一个Host,它不会自动部署所有网络应用程序。

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

但出于开发目的,我确实希望 dreambear 网络应用程序无需重新启动即可自动重新加载(因此这是在 SO 上,而不是服务器故障)。

Catalina/localhost/dreambear.xml

<Context reloadable="true">
    <Parameter name="gamePageUrl" value="http://****/dreambear.html" />
</Context>

我通过将 dreambear.war 放在 webapps 目录中来部署 Web 应用程序。不幸的是,它不会自动重新加载:

  • (Host:unpackWARs = false): 未检测到新版本的WAR
  • (Host:unpackWARs = true):新版WAR没有解包
  • (Host:unpackWARs = true):如果我删除解压后的目录,新的WAR会被解压但不会部署。

有没有办法实现我想要的?我不想启用autoDeploy,因为每次我放入新的WAR(see here)时都会删除我的上下文xml。

【问题讨论】:

    标签: java tomcat servlets tomcat6 hotdeploy


    【解决方案1】:

    我尝试了一些组合,它们都不会从 autoDeploy 设置为 false 的 WAR 文件中重新部署。

    Context 中将reloadable 设置为true 不起作用,因为文档状态

    如果你想让 Catalina 设置为 true 监控 /WEB-INF/classes/ 中的类 和 /WEB-INF/lib 进行更改,以及 自动重新加载网页 如果检测到更改,则应用程序。

    我也尝试过从管理器网络应用重新加载

    http://localhost:8080/manager/reload?path=/dreambear
    

    不过,这也不会因战争而改变

    这在网络时很有用 应用程序上下文不可重新加载 并且您已经更新了课程或 /WEB-INF/classes 中的属性文件 目录或当您添加或 更新了 /WEB-INF/lib 中的 jar 文件 目录。

    manager docs 对此更清楚

    目前,应用程序重新加载(到 获取对课程的更改或 web.xml 文件)不支持时 web应用直接部署 来自 WAR 文件。它只在 Web 应用程序部署自 解压后的目录。如果你是 使用 WAR 文件,您应该取消部署 然后部署或部署 再次更新应用程序参数 获取您的更改。

    【讨论】:

    • 我想我只是将应用程序上传为目录而不是战争。我依稀记得在我的学生时代,无论如何在 Tomcat 中效果更好。
    猜你喜欢
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    相关资源
    最近更新 更多