如何以编程方式在Tomcat上自行关闭Spring应用程序

时间:2016-11-27 12:53:15

标签: spring tomcat web-applications applicationcontext application-shutdown

我们如何以编程方式自行关闭或停止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();
    }
}

感谢任何帮助。

1 个答案:

答案 0 :(得分: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 manager一样停止应用程序

Start / stop a web application from itself?