我想在不使用 Tomcat Manager 或自动 Reloadable 属性的情况下重新加载(或重新启动)Apache Tomcat(6 或 7)服务器上的一个特定 Web 应用程序。使用管理器会再次带来另一个安全风险,并且当您需要上传/复制大型文件时,reloadable 属性不起作用,因为在上传尚未完成时它已经重新加载。
作为 root,重新加载特定的 Web 应用程序应该很容易,而不是重新启动 Tomcat 服务(重新加载其上的每个 Web 应用程序),对吗?
答案1
使用JMX,并且只允许从本地主机连接。
答案2
重新上传大文件的典型方法是直接将整个新的 .war 文件放到那里,tomcat 将“完整”重新部署您的应用程序。现在您可以进行并行部署https://stackoverflow.com/a/6584259/32453
既然您提到您是 root,那么我想您也可以弹出所有 tomcat。
或者我的想法是复制所有新文件,然后只需“重命名”文件夹,然后将旧文件夹重命名为其他名称后,以某种方式将其重命名为 webapps 文件夹。
也可能有一种方法可以指示 tomcat只观看“特定位置”而不是默认值(至少是 WEB-INF/lib/*)(context.xml:WatchedResource 标签默认是 WEB-INF/web.xml)。
这样您就可以复制文件然后触摸那里的文件。
答案3
使用管理器会再次带来另一个安全风险
您所说的安全风险是什么?
wget --http-user=user \
--http-password=password \
-q -O - http://localhost:8080/manager/reload?path=/examples
http://tomcat.apache.org/tomcat-6.0-doc/manager-howto.html#Supported%20Manager%20Commands