2017-01-03 114 views
1

我正在尋找解決方案來自動更新安裝在tomcat服務器上的應用程序。自動更新tomcat應用程序

我編碼的應用程序應該在公共服務器上有新版本時自行更新。 重要的是說客戶端將自己的war文件安裝在自己的服務器上。

如何在不要求客戶端創建一個由cron任務調用的程序來更新war文件(如果需要)的情況下?

的目標是,所有的客戶端使用的應用程序的版本相同。

+0

你有訪問客戶端的tomcat嗎?您可以使用來自中央服務器的tomcat管理工具部署新戰爭。例如,用一個螞蟻任務。如果不是,則創建第二個應用程序來檢查和部署 – pedrofb

+0

在安全的Tomcat環境中,應用程序無法在本地磁盤的任何位置寫入數據。允許應用程序在Tomcat的部署目錄中創建或更新文件將是一個非常大的安全漏洞。 –

+0

正在尋找相同的信息,從應用程序本身進行更新,但您建議的crontab對我來說很好。無論如何,在3am tomcat服務重新啓動,所以我會添加一個下載和一些腳本來測試版本。一旦準備好並經過測試,我會將其作爲答案發布。 –

回答

0

在我看來,你可以有一個守護線程[Java程序將成爲應用程序的一部分]運行,以檢查從回購的更新版本。一旦可用,線程程序就可以獲取最新版本。然後通過覆蓋現有的應用程序來安裝最新的應用程序。重新加載應用上下文。

1

如果已安裝manager應用程序,您可以在應用程序中執行此操作。簡單地編寫一個定期的過程(例如Quartz,或者用Java編寫自己的窮人的cron),以便中央服務器進行更新。

如果您的更新服務器是足夠聰明,要做到這一點,你應該能夠簡單地進行與If-Modified-Since頭的HTTP GET要求,所以你要麼得到一個304 Not Modified響應,否則你會得到與更新的WAR文件200 OK 。如果你得到一個304,什麼都不要做。

如果找到更新,請在將manager應用程序連接到deploy the new version的同時將更新的WAR文件下載到內存中,或將其傳輸到內存中。