Tomcat热部署失败
我想在tomcat中进行热部署,但失败了。我使用maven tomcat插件进行部署。 当我调用“mvn tomcat:redeploy”时,war被成功上传到tomcat webapps文件夹。但是它没有成功解包,因为my original webapplication文件夹没有成功删除。WEB-INF/lib下仍然存在一个oracle jdbc jar。当我尝试手动删除它时,它不能被删除事件。它告诉我有一个过程在使用它。我想jdbc连接还没有发布 我怎样才能解决这个问题?谢谢Tomcat热部署失败,tomcat,deployment,maven,hotdeploy,Tomcat,Deployment,Maven,Hotdeploy,我想在tomcat中进行热部署,但失败了。我使用maven tomcat插件进行部署。 当我调用“mvn tomcat:redeploy”时,war被成功上传到tomcat webapps文件夹。但是它没有成功解包,因为my original webapplication文件夹没有成功删除。WEB-INF/lib下仍然存在一个oracle jdbc jar。当我尝试手动删除它时,它不能被删除事件。它告诉我有一个过程在使用它。我想jdbc连接还没有发布 我怎样才能解决这个问题?谢谢 Jeff Zh
Jeff Zhang由于webapp类加载器外部的引用保留了webapp中的某些实例/类,导致webapp未完全垃圾收集,可能会导致webapp未取消部署。这将锁定webapp中的jar,防止webapp文件被删除 这是你自己的网络应用吗?如果是这样,您应该尝试使用内存分析器在tomcat中对其进行评测—执行部署、使用和取消部署循环,并查看哪些引用保留了您的webapp的类/实例 因为它是jdbc驱动程序,所以我首先看一下数据源。例如,如果使用Spring配置数据源,请确保数据源已关闭。例如
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
destroy method=“close”
可确保webapp终止时数据源正确关闭。您可以更改tomcat的context.xml中的antiJarLocking和antiResourceLocking属性,然后可以成功删除旧war,以便重新部署您的应用程序
<Context antiJARLocking="true" antiResourceLocking="true">
这是我的解决方案!