javaweb程序如何重启自身?

请问我想在java代码中重启自己程序。有方法可以吗?

回复
阅读 734
6 个回答

自己直接重启自己是做不到的,毕竟死人不会说话
最简单也最不靠谱的方式之一是死前留一个命令,过几秒后启动自己
稍微靠谱一些的方法是用PM2之类的工具,检测到进程死掉之后直接重启

自己写个工具类, 专门用于重启自己, 把 java 程序地址, 程序启动参数组织好. 主程序要退出的时候, 用ProcessBuilder启动子进程, 子进程再启动主进程.

public class ProcessRun {
    public static void main(String[] args) throws Exception {
        var pb =  new ProcessBuilder("java", "主类", "其它参数");
        pb.start();
        Thread.sleep(1000);
        System.out.println("主进程退出");
    }
}

写个重启脚本就能重启了

一般程序自启的办法是

  1. 先把自己(或重启程序)A 拷贝一份到临时目录 B
  2. 启动临时目录下的程序 B(通过参数)来关闭当前程序 A
  3. B 在检查到 A 已经关闭之后,再进行一系列操作(比如更新)
  4. B 重启 A(或更新后的 A)
  5. B 把自己干掉(如果系统允许在运行结束即删除)或者通知启动起来的 A 结束并干掉自己

比较建议的是,使用 Docker 或者 Supervisor 这类工具,配置始终重启,然后在代码里面退出主进程, Docker 和 Supervisor 就会自动拉起来。

Spring Boot Actuator 了解下

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏