0
我有一個正在部署在tomcat 9上的web應用程序。作爲部署的一部分,我們將戰爭放到webapps目錄,並且tomcat重新部署戰爭。但有時我們看到在日誌中的一些錯誤,基本上摧毀一些春天bean的方法,則不會調用:Spring bean在tomcat中重新部署應用程序時未被破壞
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)
彈簧豆正在創造它被銷燬的銷燬方法,並因錯誤此主題線程即使重新部署後仍然處於活動狀態。
我使用的XML文件,Spring配置:
<bean id="GlobalSearchEventLoadMessageProcessing"
class="xxx.GlobalSearchEventLoadMessageProcessing"
init-method="initialize" destroy-method="cleanUp">
</bean>
如何確保銷燬方法被調用,並完全執行。 我正在使用Java 8,Tomcat 9和Spring 4.1.9
PS:我無法停止並啓動部署過程的服務器。
感謝您的回覆...實際上在清理方法Executor服務正在關閉和JMSContext正在關閉,這可能是內部使用這些第三方罐......我不認爲我可以避免這... 任何其他建議? – Vishal
它可能與您正在使用的JMSContext有關,因爲我相信這是一個間接調用,Java/Tomcat不會「看到」不同線程中的依賴關係,並允許在代碼執行完成之前從內存中刪除JAR。您可以嘗試更改代碼以明確使用您的依賴關係。 – Zilvinas