2011-10-14 169 views
1

我有一個控制檯Java應用程序,它可以在遠程服務器上運行(nohup java -jar myapp.jar &)。Java守護進程部署

經常(每隔一天)我需要用新的JAR文件替換(每當我修復缺陷時)。

目前我通過使用ssh(WinSCP)連接到服務器來做到這一點。

如何創建一個機制,使用它我可以通過http協議升級應用程序?我可以使用JMX嗎?

這一機制應該做以下幾件事:

一)停止當前運行的應用程序。

b)將新的JAR文件上傳到服務器。

c)啓動新的JAR文件。

+0

服務器運行什麼操作系統?您建議的熱部署機制聽起來像是一個合理的工作量。如果服務器運行的是POSIX操作系統,那麼腳本可以更容易地使用sftp文件,然後通過ssh遠程運行一些命令以重新啓動服務器?您可以將腳本直接合併到您的構建機制中。 – Adamski

+0

服務器正在Ubuntu服務器上運行。 –

回答

2

基本上你需要將程序分解成兩個部分:

  1. monitor分量獲取新的jar,停止程序,取代了罐子,重新啓動該程序

  2. 實際程序,控制檯java應用程序

理論上你可以在單個java進程中完成所有這些工作,但是額外的在我看來,複雜性是不值得的。

+1

是的,我知道我可以自己做。但是,如果有現成的解決方案,我想使用它們。不想重新發明輪子:) –

+0

有Java Web Start,但它更適合於交互式應用程序,它只在啓動時檢查最新版本。 –

0

在LiveRebel中,對於獨立應用程序(即守護進程),there's native support。所以主應用程序運行在與指揮中心通信的看門狗代理上。從命令中心可以管理更新。