diff --git a/src/main/java/com/leaper/pm2java/controller/AppCenterController.java b/src/main/java/com/leaper/pm2java/controller/AppCenterController.java index 1fa9b95..2c20333 100644 --- a/src/main/java/com/leaper/pm2java/controller/AppCenterController.java +++ b/src/main/java/com/leaper/pm2java/controller/AppCenterController.java @@ -4,6 +4,7 @@ package com.leaper.pm2java.controller; import com.leaper.pm2java.entity.AppServerEntity; import com.leaper.pm2java.entity.Result; import com.leaper.pm2java.service.Pm2JavaService; +import com.leaper.pm2java.service.impl.Pm2JavaServiceImpl; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -34,8 +35,8 @@ public class AppCenterController { //重启 @PostMapping("restart") public Result restart(@RequestBody AppServerEntity appServerEntity){ - pm2JavaService.stop(appServerEntity); - pm2JavaService.start(appServerEntity); + pm2JavaService.restart(appServerEntity.getName()); + return Result.success(); } diff --git a/src/main/java/com/leaper/pm2java/service/Pm2JavaService.java b/src/main/java/com/leaper/pm2java/service/Pm2JavaService.java index 37aaf53..4812303 100644 --- a/src/main/java/com/leaper/pm2java/service/Pm2JavaService.java +++ b/src/main/java/com/leaper/pm2java/service/Pm2JavaService.java @@ -40,4 +40,5 @@ public interface Pm2JavaService { void sendLog(WebSocketConn webSocketConn); + void restart(String appServerEntity); } diff --git a/src/main/java/com/leaper/pm2java/service/impl/Pm2JavaServiceImpl.java b/src/main/java/com/leaper/pm2java/service/impl/Pm2JavaServiceImpl.java index 14a432a..d53d850 100644 --- a/src/main/java/com/leaper/pm2java/service/impl/Pm2JavaServiceImpl.java +++ b/src/main/java/com/leaper/pm2java/service/impl/Pm2JavaServiceImpl.java @@ -360,4 +360,18 @@ public class Pm2JavaServiceImpl implements Pm2JavaService { } }); } + + @Override + public void restart(String appServerInfo) { + stop(Pm2JavaServiceImpl.appServerInfoRecordMap.get(appServerInfo)); + //确保服务停止后再启动 + while (Pm2JavaServiceImpl.processBuilderMap.get(appServerInfo) != null) { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + start(Pm2JavaServiceImpl.appServerInfoRecordMap.get(appServerInfo)); + } } diff --git a/src/main/java/com/leaper/pm2java/service/task/CronTask.java b/src/main/java/com/leaper/pm2java/service/task/CronTask.java index 105f8ec..7abafd1 100644 --- a/src/main/java/com/leaper/pm2java/service/task/CronTask.java +++ b/src/main/java/com/leaper/pm2java/service/task/CronTask.java @@ -16,10 +16,11 @@ public class CronTask { @Scheduled(cron = "0 10 0 * * ?") // 每隔60秒执行一次任务 public void executeTask() { - for ( String appServerInfo : Pm2JavaServiceImpl.appServerInfoRecordMap.keySet()){ - if (Pm2JavaServiceImpl.appServerInfoRecordMap.get(appServerInfo).getRestartInSmallHours() && Pm2JavaServiceImpl.processBuilderMap.get(appServerInfo)!= null){ - pm2JavaService.stop(Pm2JavaServiceImpl.appServerInfoRecordMap.get(appServerInfo)); - pm2JavaService.start(Pm2JavaServiceImpl.appServerInfoRecordMap.get(appServerInfo)); + for (String appServerInfo : Pm2JavaServiceImpl.appServerInfoRecordMap.keySet()) { + if (Pm2JavaServiceImpl.appServerInfoRecordMap.get(appServerInfo).getRestartInSmallHours() != null + && Pm2JavaServiceImpl.appServerInfoRecordMap.get(appServerInfo).getRestartInSmallHours() + && Pm2JavaServiceImpl.processBuilderMap.get(appServerInfo) != null) { + pm2JavaService.restart(String appServerInfo); } }