繁体   English   中英

使用 java 函数从 Spring Boot 调用 Spring actuator /restart 端点

[英]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] 的线程,但未能停止它。 这很可能造成内存泄漏。 线程的堆栈跟踪:

  • 请注意此问题/答案的未来读者, RestartEndpoint不包含在spring-boot-actuator中,您需要添加spring-cloud-context依赖项。
  1. 在这里获取 json
@Autowired
private HealthEndpoint healthEndpoint;

public Health getAlive() {
    return healthEndpoint.health();
}
  1. 添加自定义逻辑

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM