tomcat 7 undeploy会失败dues log4j.properties

时间:2013-10-10 17:21:38

标签: tomcat web-applications log4j undeploy

这个错误令人费解。在我的webapps中,我根据建议在WEB-IF / classes中有log4j.properties。

当我从eclipse部署时,我在webapp上停止,取消部署,然后部署。奇怪的是,10次中有8次我在取消部署时出现以下错误 build.xml:526:FAIL - 无法删除[C:\ Program Files \ Apache Software Foundation \ Tomcat 7.0 \ webapps \ punch]。此文件的持续存在可能会导致问题。

我的webapp下剩下的唯一文件是WEB-INF / classes / log4j.properties。其他一切都被删除了。

我也无法手动删除文件或webapp文件夹。我必须停止Tomcat服务,删除该文件夹然后重新启动。

有没有解决方案?

感谢。

这是我在build.xml中的删除任务

<target name="remove"
 description="Remove application on servlet container">

<stop url="${manager.url}"
     username="${manager.username}"
     password="${manager.password}"
         path="${app.path}"/>

<undeploy url="${manager.url}"
     username="${manager.username}"
     password="${manager.password}"
         path="${app.path}"/>

</target>

3 个答案:

答案 0 :(得分:0)

那是因为文件已打开以供阅读。您需要至少关闭您的应用程序。这可以通过PsiProbe轻松完成。

答案 1 :(得分:0)

确保在ServletContextListener的contextDestroyed()方法中调用LogManager.shutdown()。这应该确保log4j没有打开文件。

答案 2 :(得分:0)

这是我的工作:

我创建了另一个目标来将war复制到Tomcat的webapp目录。

<target name="copywar" depends="dist">
    <copy file="${dist.home}/${app.name}.war" todir="${catalina.home}/webapps" />
</target>

我还确保Tomcat可以在server.xml中重新部署

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">

这很好用。谢谢你的帮助。