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

相关问题