我想在tomcat中做热部署,但是失败了。我使用maven tomcat插件进行部署。当我调用"mvn tomcat:redeploy“时,war被成功上传到tomcat webapps文件夹。但它没有成功解包,因为我的原始not应用程序文件夹没有成功删除。WEB-INF/lib下仍然存在一个oracle jdbc jar。当我尝试手动删除它时,它不能被删除事件。它告诉我有一个进程正在使用它。我猜jdbc连接没有发布。
我该如何解决这个问题?谢谢
张杰夫
发布于 2011-04-07 16:45:04
webapp未取消部署可能是由于webapp类加载器外部的引用持有webapp中的某些实例/类而导致webapp未被完全垃圾回收。这将在webapp中锁定这些jars,防止webapp文件被删除。
这是你自己的网络应用吗?如果是这样的话,你应该尝试用一个内存分析器在tomcat中分析它--执行一个部署,使用和取消部署周期,看看哪些引用保留了你的webapp的类/实例。
因为它是jdbc驱动程序,所以我将从查看数据源开始。例如,如果使用Spring配置数据源,请确保数据源已关闭。例如。
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">destroy-method="close"确保在webapp终止时数据源被正确关闭。
发布于 2012-07-13 21:30:27
你可以在tomcat的context.xml中更改antiJarLocking和antiResourceLocking属性,然后旧的war就可以成功删除,这样你就可以重新部署你的应用了。
<Context antiJARLocking="true" antiResourceLocking="true"> https://stackoverflow.com/questions/5578258
复制相似问题