0

如何以編程方式關閉或停止Spring應用程序?如何以編程方式在Tomcat上自行關閉Spring應用程序

我們目前使用ConfigurableApplicationContext#close(),是的,它確實關閉了應用程序,但沒有關閉或停止應用程序。

從tomcat管理器中,應用程序狀態仍在運行,所以客戶端仍然可以連接到Web應用程序並獲取前端資源。此外,所有的servlet似乎仍在工作,並可以接受請求。

下面的代碼顯示了我們目前的工作方式。

@Autowired 
private ConfigurableApplicationContext configurableApplicationContext; 

@Scheduled(cron="0 0/5 * * * ?") 
private void validateLicenseExpired() 
{ 
    try 
    { 
     LicenseUtils.isLicensingPeriodValid(); 
    } catch (LicenseInvalidException lie) { 
     logger.error("\t The licensing is expired", lie); 
     configurableApplicationContext.close(); 
    } 
} 

任何幫助表示讚賞。

回答

0

如果它是一個啓動應用程序,您可以使用以下鏈接停止應用程序。

Programmatically shut down Spring Boot application

否則,您可以通過編程調用shutdown.sh像下面停止服務器。

String command = "<path-to-tomcat>shutdown.sh"; // for windows use bat 
Process child = Runtime.getRuntime().exec(command); 

[編輯]

此線程解釋了有關如Tomcat經理回採應用

Start/stop a web application from itself?

+0

阿維納什您好,感謝您的回覆。我們目前沒有爲我們的項目使用彈簧引導。但是,您提供的鏈接看起來像使用ConfigurableApplicationContext.html#close()的相同方式?我們不能關閉那裏有多個應用程序的容器(tomcat)。 – Bruce

+0

我編輯了我的帖子,請仔細閱讀。 – Avinash

相關問題