[英]How can I catch when my application stops?
我有一個spring-boot應用程序,正在使用石英創建作業。 我像./bin/app start這樣運行我的應用程序,當我的應用程序停止時,我需要趕上實現Job的類: ./bin/app stop有人知道我該怎么做嗎? 我嘗試使用方法destroy()
實現DisposableBean
,但不起作用。 我的主要班級是這樣的:
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() {
...
}
}
使用@PreDestroy
批注。 用@PreDestroy
注釋要在停止時執行的方法。
@PreDestroy
public void onExit() {
//STOP FROM THE LIFECYCLE
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.