当前位置: 首页 > 知识库问答 >
问题:

在tomcat中重新部署应用程序时Spring bean未被破坏

公孙弘图
2023-03-14

我有一个webapp,它正在Tomcat9上部署。作为部署的一部分,我们只需将war放到webapps目录中,tomcat负责war的重新部署。但是有时我们会在日志中看到一些错误,主要是一些spring bean的destroy方法没有被调用:

31-Aug-2017 21:41:35.292 INFO [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.startup.HostConfig.undeploy Undeploying context [/globalsearch]
INFO : org.springframework.web.context.support.XmlWebApplicationContext - Closing WebApplicationContext for namespace 'appServlet-servlet': startup date [Wed Aug 30 22:34:34 AEST 2017]; parent: Root WebApplicationContext
INFO : org.springframework.web.context.support.XmlWebApplicationContext - Closing Root WebApplicationContext: startup date [Wed Aug 30 22:34:26 AEST 2017]; root of context hierarchy
WARN : org.springframework.beans.factory.support.DisposableBeanAdapter - Invocation of destroy method 'cleanUp' failed on bean with name 'GlobalSearchEventLoadMessageProcessing': java.lang.IllegalStateException: java.io.FileNotFoundException: /opt/tomcat/9.0.0.M19/webapps/globalsearch/WEB-INF/lib/commons-collections-3.2.1.jar (No such file or directory)
WARN : org.springframework.beans.factory.support.DisposableBeanAdapter - Invocation of destroy method 'cleanUp' failed on bean with name 'globalSearchMessageSender': java.lang.IllegalStateException: java.io.FileNotFoundException: /opt/tomcat/9.0.0.M19/webapps/globalsearch/WEB-INF/lib/commons-collections-3.2.1.jar (No such file or directory)
WARN : org.springframework.beans.factory.support.DisposableBeanAdapter - Invocation of destroy method 'stopServer' failed on bean with name 'globalSearchEmbeddedJMS': java.lang.IllegalStateException: java.io.FileNotFoundException: /opt/tomcat/9.0.0.M19/webapps/globalsearch/WEB-INF/lib/commons-collections-3.2.1.jar (No such file or directory)
WARN : org.springframework.beans.factory.support.DisposableBeanAdapter - Invocation of destroy method 'close' failed on bean with name 'connectionFactory': java.lang.IllegalStateException: java.io.FileNotFoundException: /opt/tomcat/9.0.0.M19/webapps/globalsearch/WEB-INF/lib/commons-collections-3.2.1.jar (No such file or directory)
<bean id="GlobalSearchEventLoadMessageProcessing"
    class="xxx.GlobalSearchEventLoadMessageProcessing"
    init-method="initialize" destroy-method="cleanUp">
</bean>

PS:我不能停止和启动服务器部署过程。

共有1个答案

彭开畅
2023-03-14

查看错误,调用了该方法:

WARN : org.springframework.beans.factory.support.DisposableBeanAdapter - Invocation of destroy method 'cleanUp' failed on bean with name 'GlobalSearchEventLoadMessageProcessing': java.lang.IllegalStateException: java.io.FileNotFoundException: /opt/tomcat/9.0.0.M19/webapps/globalsearch/WEB-INF/lib/commons-collections-3.2.1.jar (No such file or directory)

但它失败了,因为很可能是由于争用条件--您试图从已经从容器中移除的jar文件中运行一些代码。在cleanup方法中可以避免使用外部库吗?

 类似资料:
  • 完成干净的构建后,我将war文件复制到Tomcat的文件夹中。但是部署会发生两次,并且在上下文已经存在的情况下以异常结束。我错过了什么? 非常感谢您的帮助。

  • 我有一个Grails(2.5.3版)应用程序,当我通过选项:要部署的WAR文件在Tomcat中部署时,选择WAR文件,会出现以下错误。如果我尝试一个更简单的应用程序(大小、复杂度等),它运行得很好。 但是,如果在从manager运行应用程序时手动将war文件的内容复制到Tomcat路径:pathTomcat/webapps/myApplication,则效果良好。出现任何错误。 错误: Grail

  • 我试图在tomcat 6中部署一个Spring引导应用程序(战争)(当在tomcat 7和更旧的版本中部署时,我没有问题),事实上在tomcat 6(servlet 2.5)中部署是不可能使用新的方式(我会把描述新方式的链接放在底部),因为Spring Boot使用Servet 3.0 API初始化ServletContext(注册Servlet等),所以您不能在Servlet 2.5容器中开箱即

  • 我在将spring boot应用程序部署到tomcat时遇到了问题,尽管在IDE中工作得很好。我按照https://docs.spring.io/spring-boot/docs/current/reference/html/howto-tegratic-deployment.html中的说明进行了操作 更详细的结构: mvn clear包给出错误:

  • 我正在开发一个简单的应用程序,它使用泽西作为框架来构建API,并使用Jackson来处理JSON。 当我部署应用程序时,通过复制 我很确定这个问题不在java代码中,因为它曾经与*一起工作。jar包含方法。但我厌倦了这一点,希望将其迁移到maven体系结构。 我不会发布我的全部代码,但你可以在这里看到。 为了简化操作,下面列出了我使用的依赖项: jersey json v1.19 什么会导致此错误

  • 我正在尝试将.war、.aar、.xml和.properties文件部署到tomcat docker容器。我使用了下面的Dockerfile和基本的tomcat docker映像。 到目前为止一切正常。它提取war文件并启动容器内的应用程序。 但是现在我需要像这样添加/编辑“/usr/local/tomcat/webapps/root/web-inf//”和“/usr/local/tomcat/w