Uploaded image for project: 'Struts 1'
  1. Struts 1
  2. STR-1898

NoClassDefFoundError on weblogic 8.1 during redeploy

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.1.0
    • Fix Version/s: None
    • Component/s: Unknown
    • Labels:
      None
    • Environment:
      Operating System: Windows XP
      Platform: PC
    • Bugzilla Id:
      25759

      Description

      When I re-deploy to a running instance of Weblogic 8.1 and the container
      notices the new files and auto-redeploys them, I get the following exception
      on the console:

      <Dec 25, 2003 1:12:32 PM EST> <Error> <HTTP> <BEA-101268> <ServletContext
      (id=16065256,name=scrc,context-path=/scrc): Failed while destroying servlet:
      action.
      java.lang.NoClassDefFoundError:
      org/apache/commons/collections/FastHashMap$KeySet
      at org.apache.commons.collections.FastHashMap.keySet(Unknown Source)
      at org.apache.struts.action.ActionServlet.destroyDataSources
      (ActionServlet.java:769)
      at org.apache.struts.action.ActionServlet.destroy
      (ActionServlet.java:431)
      at weblogic.servlet.internal.ServletStubImpl$ServletDestroyAction.run
      (ServletStubImpl.java:1080)
      at weblogic.security.acl.internal.AuthenticatedSubject.doAs
      (AuthenticatedSubject.java:317)
      at weblogic.security.service.SecurityManager.runAs
      (SecurityManager.java:97)
      at weblogic.servlet.internal.ServletStubImpl.destroyServlet
      (ServletStubImpl.java:564)
      at weblogic.servlet.internal.ServletStubImpl.destroyServlet
      (ServletStubImpl.java:590)
      at weblogic.servlet.internal.ServletStubImpl.destroyServlet
      (ServletStubImpl.java:576)
      at weblogic.servlet.internal.WebAppServletContext.destroyServlets
      (WebAppServletContext.java:5719)
      at weblogic.servlet.internal.WebAppServletContext.destroy
      (WebAppServletContext.java:5605)
      at weblogic.servlet.internal.ServletContextManager.removeContext
      (ServletContextManager.java:189)
      at weblogic.servlet.internal.HttpServer.unloadWebApp
      (HttpServer.java:624)
      at weblogic.servlet.internal.WebAppModule.destroyOldContexts
      (WebAppModule.java:747)
      at weblogic.servlet.internal.WebAppModule.prepare
      (WebAppModule.java:571)
      at weblogic.j2ee.J2EEApplicationContainer.prepareWebModule
      (J2EEApplicationContainer.java:2841)
      at weblogic.j2ee.J2EEApplicationContainer.prepareModules
      (J2EEApplicationContainer.java:1476)
      at weblogic.j2ee.J2EEApplicationContainer.prepare
      (J2EEApplicationContainer.java:1136)
      at weblogic.j2ee.J2EEApplicationContainer.prepare
      (J2EEApplicationContainer.java:975)
      at
      weblogic.management.deploy.slave.SlaveDeployer$ComponentActivateTask.prepareCon
      tainer(SlaveDeployer.java:2571)
      at
      weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.createContainer
      (SlaveDeployer.java:2523)
      at weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.prepare
      (SlaveDeployer.java:2453)
      at weblogic.management.deploy.slave.SlaveDeployer.processPrepareTask
      (SlaveDeployer.java:820)
      at weblogic.management.deploy.slave.SlaveDeployer.prepareDelta
      (SlaveDeployer.java:536)
      at weblogic.management.deploy.slave.SlaveDeployer.prepareUpdate
      (SlaveDeployer.java:494)
      at weblogic.drs.internal.SlaveCallbackHandler$1.execute
      (SlaveCallbackHandler.java:25)
      at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:178)
      at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:151)
      >

      It doesn't really hurt anything, but it makes some people around here
      nervous. If I had to guess, I would bet that somehow struts is putting
      FastHashMap$KeySet instances someplace that doesn't get destroyed between
      redeploys, so when Weblogic unloads the old version of the class, and loads
      the new one, then something attempts to access the old one, you get the error.

      The "someplace that doesn't get destroyed between redeploys" could even be the
      session, as I think we have Weblogic set up to persist the sessions between
      server bounces, which I presume means they are also persisted across redeploys.

        Attachments

          Activity

            People

            • Assignee:
              dsevans93 David Evans
              Reporter:
              john@jpevans.com John Evans
            • Votes:
              2 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: