DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25759>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25759

NoClassDefFoundError on weblogic 8.1 during redeploy

           Summary: NoClassDefFoundError on weblogic 8.1 during redeploy
           Product: Struts
           Version: 0.5 Final
          Platform: PC
        OS/Version: Windows XP
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Unknown
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


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.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to