Synopsis
I am attempting to export a WAR to my webapps folder but everytiime I update the war it deletes all of the content of the webapp minus /WEB-INF/lib/struts.jar
System info
- Windows 2K3
- Tomcat 5.5
- JRE 1.6.23
Ok here is what is happening:
- Export project as .WAR via Eclipse (Helios) to /webapps directory
- Tomcat sees the change in the war and attempts to rebuild webapp
- Tomcat deletes contents of webapp folder (/webapps/public)
- (/webapps/public/WEB-INF/lib/struts.jar) is locked preventing it from being deleted.
- Tomcat gives up rebuild leaving me with nothing in the folder besides the struts.jar causing the application to break.
Question(s)
- Is there a way to keep the jar from being locked?
- (OR) a better deployment process I should be using (and can pick up quickly)?
Using antiResourceLocking="true" and antiJARLocking="true" on the <Context> element did not solve the problem. Appreciate any help.
Does adding
unloadDelayto your Context help?Which is the:
Source: http://tomcat.apache.org/tomcat-5.5-doc/config/context.html
Apparently sometimes the web app is in the middle of a large GC / the ClassLoader hasn’t been garbage collected and cannot release in time. Try experimenting with the timeout to see if that helps.
There is also some anecdotal evidence of strange file locking on Windows platforms.
Also, assuming you’re referring to a development (not production) build environment, look at one of my questions, showing my approach to Tomcat / Eclipse hot deploy environments:
Tomcat and Eclipse Zero Turnaround Deployment
Update
This helpful thread comes up on a Google search of the same issue and is referred to by a number of others:
http://blog.exis.com/colin/?s=I+Put+A+Spell+On+You