2012-01-31 64 views
11

我有一個Java 1.6應用程序部署在幾臺機器上(〜30),並作爲Windows服務啓動。如何在啓動時自動升級Java應用程序?

我的主要問題是維護這些已部署的工件:如果我開發此應用程序的新版本,我不想在每臺機器上手動重新部署它。

理想情況下,當Windows服務啓動時,它檢查遠程服務器是否存在更新,如果找到,則升級該應用程序。 請注意,在升級之後,服務需要重新啓動纔是可以接受的。

該機制可以與Maven快照驗證進行比較:如果遠程存儲庫上存在SNAPSHOT版本的更新版本,則Maven會在運行該版本之前下載該版本。 請注意,應用程序本身將部署在Maven存儲庫(在我們的案例中爲Nexus),因此將針對此Nexus實例檢查更新。

什麼是我的技術解決方案來實現這樣的自動應用更新?

不要猶豫,問我更詳細的技術信息或上下文...

感謝。


編輯:正如彼得Lawrey說,我可以使用Java Web Start的。但是,如何將JWS集成到作爲Windows服務運行的Java應用程序中?

+0

這不是java問題。更多的部署管理。 – Santosh 2012-01-31 13:29:12

+0

儘管這並不是一個真正的Java問題,但我不明白這個問題的稍微更通用的版本(確保版本始終是最新的版本)無法在Java中解決。可能是網絡類加載的結果? – 2012-01-31 13:37:26

+0

@Santosh是和不。 Windows--特別是我們在這裏使用的 - 沒有提供所需的工具來簡化這樣的過程。給我Linux,ssh或一些bash腳本,我會很高興:) – romaintaz 2012-01-31 13:38:22

回答

4

我想看看Java Web Start

+0

JWS是我的想法之一,但我沒有成功地讓它按預期工作。我的問題之一是應用程序應作爲Windows服務運行,JWS爲應用程序啓動另一個JVM。因此,一旦JWS啓動的JVM啓動,Windows服務就會停止。 – romaintaz 2012-01-31 13:42:27

1

的通用技術這是使用發射器。步驟是這樣的:

  1. 啓動發射器。
  2. 啓動程序檢查是否應該更新應用程序。如果是,啓動程序更新應用程序(我認爲這是「更新步驟」)。
  3. 更新步驟後,啓動程序運行應用程序。
相關問題