我有一个nsis安装脚本,它将.war
文件复制到Tomcat webapps
目录中。如果Tomcat已经运行,它会注意到一个新的.war
被放入webapps
目录并开始解压缩它。然而,解压缩发生在后台,安装程序认为它已完成,因此它会提示用户重新启动。如果用户现在选择重新启动,那么在解压.war
期间,Tomcat将会中途中断,并使webapp处于损坏状态。.war重启竞争条件的部署
我能想到的唯一解决方案是在安装程序启动时停止Tomcat服务(net stop tomcat6
),以防止Tomcat解包.war
。然后在重启后,Tomcat服务将启动,然后解压。这似乎很脏,但因为如果用户选择不立即重新启动,它会使Tomcat服务停止(如果还有其他正在运行的Web应用程序,这可能是不受欢迎的)。
无论我采用哪种方式进行分片,Tomcat都应该认识到webapp没有完全解压并自行清理并重试。 Tomcat的bug?
为什么安装程序需要重新启动盒子? – Joe
@Joe它是需要重启的更大安装脚本的一部分。 –