tags:

views:

3357

answers:

3

How do I get Tomcat to remove the web application artifacts when using the Manager to undeploy the application?

I am using Tomcat 6.0.18. The application was deployed using the tomcat-maven-plugin 1.0-SNAPSHOT but the behavior is the same through the maven plugin or the web interface.

The Tomcat documentation provides warnings on how undeploy should behave on the Manager How To.

The war file can be removed; however, the unpacked application directory remains preventing a redeploy.

+2  A: 

It might be that your application cannot completely be undeployed because there are background threads (that you most likely started yourself) or long running requests that are preventing the application to stop completely.

Did you inspect the log files? Did they state if the application could be undeployed successfully? Or the opposite? Can you get a Thread dump after you attempted to undeploy (kill -3 processid on Unix, Ctrl-Break in a console in Windows) and see if there is something still running that shouldn't?

Also note that most applications I've seen cannot be undeployed completely with regard to the memory they took. I've run into OutOfMemoryErrors (PermGen) quite often, especially after redeploying webapps (you'll find a lot of references on PermGen if you google for it) therefor I believe redeploying is ok for development machines, but not for production ones. It's better to know this before you're puzzled by this in production.

Olaf
A: 

Good call Olaf. I am running a Wicket web application. A JIRA issue was recently opened:

WICKET 12561296 where the PageSavingThread is left running at shutdown.

Steve Lucord
+4  A: 

It may also be an issue with file locking (particularly on Windows) if you are accessing resources in a JAR library via a URL within your app.

I just had a similar issue and fixed it by modifying the following line in the

Apache Tomcat/conf/context.xml

file to:

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

(Note that there is some contention as to whether this is production safe since it creates copies of your webapp for each redeploy, but if you're on Windows and you can't fix the issue at the source, then this may provide a workable solution).

Richard Nichols