使用 java 函数从 Spring Boot 调用 Spring actuator /restart 端点
Posted
技术标签:
【中文标题】使用 java 函数从 Spring Boot 调用 Spring actuator /restart 端点【英文标题】:Call Spring actuator /restart endpoint from Spring boot using a java function 【发布时间】:2016-12-15 12:01:34 【问题描述】:我希望重新启动 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();
【问题讨论】:
【参考方案1】:你需要注入RestartEndPoint:
@Autowired
private RestartEndpoint restartEndpoint;
...
Thread restartThread = new Thread(() -> restartEndpoint.restart());
restartThread.setDaemon(false);
restartThread.start();
它可以工作,即使它会抛出异常来通知您这可能会导致内存泄漏:
此问题/答案的未来读者请注意,RestartEndPoint 不包含在Web 应用程序 [xyx] 似乎启动了一个名为 [Thread-6] 但未能阻止它。这很可能会创建一个 内存泄漏。线程堆栈跟踪:
spring-boot-actuator
中,您需要添加 spring-cloud-context
依赖项。
【讨论】:
【参考方案2】:-
在此处获取 json
@Autowired
private HealthEndpoint healthEndpoint;
public Health getAlive()
return healthEndpoint.health();
-
添加自定义逻辑
【讨论】:
以上是关于使用 java 函数从 Spring Boot 调用 Spring actuator /restart 端点的主要内容,如果未能解决你的问题,请参考以下文章
java - 如何在spring boot java中编写一个函数来处理JPA存储库中的自定义查询?
#私藏项目实操分享#Spring Boot Serverless 实战 | 性能调优
对 Spring Boot 控制器的 Ajax 调用以重定向视图