[英]Call Spring actuator /restart endpoint from Spring boot using a java function
我正在寻找重新启动 Spring Boot 应用程序,因此使用 Spring Actuator /restart 端点正在使用 curl 工作,但我希望使用应用程序内部的 java 代码调用相同的函数,我已经尝试过这段代码,但它是不工作:
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
RestartEndpoint p = new RestartEndpoint();
p.invoke();
}
});
thread.setDaemon(false);
thread.start();
您需要注入 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
依赖项。@Autowired
private HealthEndpoint healthEndpoint;
public Health getAlive() {
return healthEndpoint.health();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.