我有一個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它是需要重啓的更大安裝腳本的一部分。 –