gpt4 book ai didi

java - 当我的应用程序停止时我该如何捕获?

转载 作者:行者123 更新时间:2023-12-02 00:35:49 24 4
gpt4 key购买 nike

我有一个 spring-boot 应用程序,我正在使用quartz 来创建工作。我运行我的应用程序就像./bin/app 启动当我的应用程序停止时,我需要在实现 Job 的类中捕获,如下所示:./bin/app 停止有人知道我该怎么做吗?我尝试使用方法 destroy() 实现 DisposableBean 但不起作用。我的主要类(class)是这样的:

public class Main implements CommandLineRunner {
public static void main(String[] args) throws Exception {
.....

Quartz 创建作业并在我的作业中创建一个变量“lock”,如下所示:

public class MyJob implements Job, DisposableBean {
private RLock lock = redissonClient.getFairLock(jobName);
.....

@Override
public void destroy() throws Exception {
if(lock != null) {
lock.forceUnlock();
}
}

当我的应用程序在执行过程中停止时,我需要强制解锁,因此我需要在 MyJob 类中而不是在 Main 类中捕获停止。先感谢您!!

最佳答案

您应该能够将事件观察器附加到应用程序上下文,例如:

  public class MyJob implements Job, DisposableBean {

public MyJob(ApplicationContext context) {
((ConfigurableApplicationContext)context).addApplicationListener(
(ContextClosedEvent event) -> onContextClosed()
);
}

private void onContextClosed() {
...
}
}

关于java - 当我的应用程序停止时我该如何捕获?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57974460/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com