Tomcat热部署失败

3
我想在Tomcat中进行热部署,但失败了。我使用Maven Tomcat插件进行部署。当我调用“mvn tomcat:redeploy”时,WAR文件成功上传到Tomcat的webapps文件夹。但是它没有成功解压缩,因为我的原始Web应用程序文件夹没有被成功删除。在WEB-INF / lib下仍然存在一个Oracle JDBC jar。即使我尝试手动删除它,它也无法被删除。它告诉我有一个进程正在使用它。我猜测JDBC连接没有释放。

我该如何解决这个问题?谢谢

Jeff Zhang

2个回答

5

您可以在Tomcat的context.xml中更改antiJarLocking和antiResourceLocking属性,然后成功删除旧的war包,这样您就可以重新部署您的应用程序了。

<Context antiJARLocking="true" antiResourceLocking="true">    

这对我来说是解决方案! - debuti

1

Web应用程序未卸载可能是由于Web应用程序未完全垃圾回收,因为Web应用程序类加载器之外的引用保留了Web应用程序中的某些实例/类。这将锁定Web应用程序中的那些JAR文件,从而防止删除Web应用程序文件。

这是您自己的Web应用程序吗?如果是,请尝试在Tomcat中使用内存分析器对其进行分析-部署、使用和卸载周期,并查看哪些引用保留了您的Web应用程序的类/实例。

由于它是JDBC驱动程序,我建议首先查看数据源。例如,如果您正在使用Spring配置数据源,请确保关闭数据源。例如:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

destroy-method="close" 确保在 Web 应用程序终止时正确关闭数据源。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接