Uploaded image for project: 'Click'
  1. Click
  2. CLK-418

Tomcat redeployment JAR locking

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Cannot Reproduce
    • 1.5 RC2
    • None
    • core
    • 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.

      Attachments

        Activity

          People

            Unassigned Unassigned
            medgar Malcolm Edgar
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: