Java Spring-完全关闭web应用程序

Java Spring-完全关闭web应用程序,java,spring,Java,Spring,我有一个web应用程序,我正试图通过在上下文上执行close()方法来关闭它: ((ConfigurableApplicationContext) appContext).close(); 执行此操作后,应用程序似乎正在继续运行,运行状况页面会产生以下异常: org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalSt

我有一个web应用程序,我正试图通过在上下文上执行
close()
方法来关闭它:

((ConfigurableApplicationContext) appContext).close();
执行此操作后,应用程序似乎正在继续运行,运行状况页面会产生以下异常:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978)
有没有一种方法可以通过Spring来解决整个问题,或者我应该求助于
System.exit()


任何帮助都将不胜感激

请看一下这些问题。他们和你的在同一条线上: ,


正如@chrylis所建议的,我认为关闭服务器(如果它没有在嵌入式模式下运行)最简单的方法是使用运行时类

您几乎不应该使用
System.exit()
。这听起来像是在传统容器中运行应用程序,而不是使用Spring Boot嵌入式容器。在这种情况下,您需要使用容器的shutdown命令。@chrylis yep agree
System.exit()
。我正在传统servlet容器中运行应用程序。有没有一种方法可以通过编程方式将shutdown命令从我的Spring应用程序发送到tomcat或jetty?我不确定。您必须能够访问管理界面,或者作为一个进程运行类似于run
tomcat stop
。迁移到嵌入式servlet容器是一种选择吗?听起来你的容器好像是一个单一的应用程序容器。这是一个选项,但我很想知道是否有可能在不切换到嵌入式的情况下做到这一点。