Tomcat热部署失败

时间:2011-04-07 08:39:13

标签: tomcat deployment maven hotdeploy

我想在tomcat中进行热部署,但是失败了。我使用maven tomcat插件来部署。 当我调用“mvn tomcat:redeploy”时,战争成功上传到tomcat webapps文件夹。但它没有成功解压缩,因为我的原始webapplication文件夹未成功删除。在WEB-INF / lib下仍然存在一个oracle jdbc jar。当我尝试手动删除它时,它不能被删除事件。它告诉我,有一个进程正在使用它。我想jdbc连接没有被释放。

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

杰夫张

2 个答案:

答案 0 :(得分:5)

你可以在tomcat的context.xml中更改antiJarLocking和antiResourceLocking属性,然后可以成功删除旧的war,这样你就可以重新部署你的app。

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

答案 1 :(得分:1)

Web应用程序没有取消部署可能是由于webapp类加载器之外的引用持有webapp中的某些实例/类而导致Web应用程序没有被完全垃圾收集。然后,这将锁定webapp中的这些jar,防止webapp文件被删除。

这是您自己的网络应用吗?如果是这样,您应该尝试使用内存分析器在tomcat中对其进行分析 - 执行部署,使用和取消部署循环,并查看哪些引用保留了您的webapp的类/实例。

因为它是jdbc驱动程序,所以我首先查看数据源。例如,如果使用Spring配置数据源,请确保关闭数据源。 E.g。

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

destroy-method="close"确保在webapp终止时正确关闭数据源。