Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Cannot Reproduce
-
1.5 RC2
-
None
-
None
-
Tomcat 5.5.25, Click 1.5-M2, JDK 1.5, click-examples
Description
I am seeing intermitt Tomcat auto deployment issues, where there is a lock on a JAR in click-examples/WEB-INF/lib/ which cannot be deleted.
This issue occurs regularly for a period and then does not occur at all. The JAR being locked on is fairly random. Sometimes spring-.jar or log4.jar
To fix this issue you stop Tomcat, delete the click-examples directory, and then restart Tomcat. This is not a good development experience.
This Tomcat behaviour is similar to CLK-82 when Click was scanning the classpath for files named "/click-controls.xml". In these cases however the JAR being locked on was always click-extras.
http://www.mail-archive.com/users@tomcat.apache.org/msg18144.html
Commenting out XmlConfigService#deployFilesInJars() fixes this issue as does setting antiResourceLocking="true" in the click-examples/META-INF/context.xml
<Context
path="/click-examples"
reloadable="true"
antiJARLocking="true"
antiResourceLocking="true">
<ResourceLink
name="users"
global="UserDatabase"
type="org.apache.catalina.UserDatabase"/>
</Context>
I can see two solutions to this problem. First is we heavily document deployment options on application servers:
- Tomcat set antiJARLocking="true" and antiResourceLocking="true"
- WebLogic unpack any click resources into your web applications /click directory before deploying
The other option is to make this configurable JAR deployment configurable:
<click-app deploy-jar-resources="true">
..
</click-app>
Otherwise we will get continual issues raised about Tomcat hot deployment.
Note this issue does not occur on JBoss as they create a new webapp instance each time you deploy an application. This is a mode you can use in Tomcat as well (since JBoss uses Tomcat internally) but it is not the default Tomcat configuration.