是否可以使用 Tomcat 手动热交换单个类?

是否可以使用 Tomcat 手动热交换单个类?

是否可以使用 Tomcat 8 手动重新加载单个类而无需重新启动服务器?这是我正在谈论的生产环境,所以我不想使用属性reloadable来实现这一点。我偶尔可能会更新单个类(或几个类),我希望 tomcat 能够识别。

因为可以使用reloadable属性或设置监视的资源来做到这一点,所以我希望也可以以某种方式手动触发。

答案1

如果您替换了类文件,而 Tomcat 已经加载了该类,则需要触发 Web 应用程序的重新部署,以便获取更新的类。触发此操作的最简单方法是触摸 Web 应用程序的 context.xml 文件。如果没有,还有其他一些选项。请参阅 Tomcat 文档中的此列表: http://tomcat.apache.org/tomcat-8.0-doc/config/automatic-deployment.html#Modified_files

答案2

最后我决定采用Tomcat 管理器。我正在使用manager-script管理器的功能(GUI 等已禁用),并且我仅限制对本地主机的访问。我在一个小的 shell 脚本中包装了一个重新加载命令,如下所示:

#!/bin/bash
echo Reloading application now...
curl http://my-user:my-password@localhost:8080/manager/text/reload?path=/
echo Done.

这将重新加载整个 Web 应用程序,我想这对我来说没问题。

相关内容