2012-01-31 66 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. 更新步骤后,启动程序运行应用程序。
相关问题