2012-05-13 39 views
0

我正在编写一个Java服务器端应用程序,我想提供内置的功能,以便苹果可以自行更新。我希望应用程序轮询服务器,如果有新版本可以更新,那么它应该让用户激活更新命令。更新自身的Java应用程序?

我想下面这个更新过程中发生:

  • 下载新的JAR文件与新版本
  • 刷新该JAR的内容到主应用程序
  • 卸载任何老班从旧JAR

我希望这种情况发生,理想情况下,没有在此过程中的应用程序PID更改。

我相信詹金斯确实这样做,但我一直无法弄清楚他们是如何做到的。

+0

不是真的,Java Web Start在此实例中不是正确的解决方案。 –

回答

0

卸载/加载技术是部署到应用程序容器中的Java EE应用程序的标准配置,您可以免费获得该技术。

唯一的问题是如何以编程方式管理更新。它必然是特定于容器的。如果您没有部署到Java EE容器,那么您将不得不深入了解自定义类加载器的血腥细节。但这只是一个开始,因为除了卸载课程之外还有更多的方法。您的应用程序可能已经启动了需要优雅地关闭的线程,例如,或者打开了套接字等。

+0

谢谢你的回答。目前,该应用程序包含一个Embedded Jetty,它通过应用程序的主要方法启动。 –