我对 Java 尤其陌生,因此我的问题可能完全是 BS,但我面临着为现有 Java 应用程序创建更新程序包装器(java 应用程序)的挑战,我无法理解其中的问题。我面临的问题是,我们不想在每次必须启动一个新 jar 时启动第二个和第三个 JVM,但是步骤 5)的终止被更新程序的线程阻塞,这是从 Updater.jar 的 Classloader 开始。
概念:
- 当前版本的应用程序被触发以检查更新
- 启动 Updater.jar
- OnUpdateAvailable -> 关闭传入连接并保存应用程序状态及其对象
- 向套接字上的更新程序发送 ReadyForUpdate 信号
- 当前应用程序终止。
- 更新程序替换应用程序可执行文件和资源
- 更新程序启动 Application.jar 的新版本,并带有恢复到其先前状态的参数
- 更新程序等待 Application -> 成功初始化
- 更新程序终止
- 新版本的应用程序已启动并运行
问题:有没有办法使用相同的虚拟机先启动更新程序,然后从更新程序启动新版本的应用程序,还是应该继续使用单独的 JVM?
java版本:1.7.0_05-icedtea OpenJDK 64-Bit Server VM(build 23.0-b21,混合模式)