我正在寻找重新启动spring boot应用程序,所以使用Spring Actuator / restart端点正在使用curl,但是我想在app中使用java代码调用相同的函数,我试过这段代码,但它不起作用:
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
RestartEndpoint p = new RestartEndpoint();
p.invoke();
}
});
thread.setDaemon(false);
thread.start();
答案 0 :(得分:12)
您需要注入RestartEndPoint:
@Autowired
private RestartEndpoint restartEndpoint;
...
Thread restartThread = new Thread(() -> restartEndpoint.restart());
restartThread.setDaemon(false);
restartThread.start();
它可以工作,即使它会抛出一个异常通知你这可能会导致内存泄漏:
Web应用程序[xyx]似乎已经启动了一个名为的线程 [Thread-6]但未能阻止它。这很有可能创造一个 内存泄漏。堆栈线程跟踪:
spring-boot-actuator
中,您需要添加spring-cloud-context
依赖项。答案 1 :(得分:0)
@Autowired
private HealthEndpoint healthEndpoint;
public Health getAlive() {
return healthEndpoint.health();
}