gpt4 book ai didi

java - 让 Tomcat 重新加载具有静态上下文的 Web 应用程序

转载 作者:行者123 更新时间:2023-11-28 21:57:17 25 4
gpt4 key购买 nike

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

  <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 目录中来部署网络应用程序。不幸的是,它不会自动重新加载:

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

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

最佳答案

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

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

Set to true if you want Catalina to monitor classes in /WEB-INF/classes/ and /WEB-INF/lib for changes, and automatically reload the web application if a change is detected.

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

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

但是,这也没有从 war 中改变

This can be useful when the web application context is not reloadable and you have updated classes or property files in the /WEB-INF/classes directory or when you have added or updated jar files in the /WEB-INF/lib directory.

manager docs对此更加清楚

Currently, application reloading (to pick up changes to the classes or web.xml file) is not supported when a web application is deployed directly from a WAR file. It only works when the web application is deployed from an unpacked directory. If you are using a WAR file, you should undeploy and then deploy or deploy with the update parameter the application again to pick up your changes.

关于java - 让 Tomcat 重新加载具有静态上下文的 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3942655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com