如何在Tomcat上以编程方式自行关闭Spring应用程序
Posted
技术标签:
【中文标题】如何在Tomcat上以编程方式自行关闭Spring应用程序【英文标题】:How to programmatically shutdown a Spring Application by itself on Tomcat 【发布时间】:2017-04-11 06:46:15 【问题描述】:我们如何以编程方式自行关闭或停止 Spring 应用程序?
我们目前正在使用ConfigurableApplicationContext#close(),是的,它会关闭应用程序,但不会关闭或停止应用程序。
从tomcat管理器来看,应用状态依然是running,所以客户端还是可以连接到web app,获取前端资源。此外,所有 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】:如果它是一个启动应用程序,您可以使用以下链接停止该应用程序。
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?
【讨论】:
您好 Avinash,感谢您的回复。我们目前没有为我们的项目使用 spring-boot。但是,您提供的链接看起来使用与 ConfigurableApplicationContext.html#close() 相同的方式?而且我们不能只关闭运行多个应用程序的容器(tomcat)。以上是关于如何在Tomcat上以编程方式自行关闭Spring应用程序的主要内容,如果未能解决你的问题,请参考以下文章
在android上以编程方式打开/关闭大写锁定和shift键