Struts does not provide this sort of thing.
Actually, I just added a call to PropertyUtils.clearDescriptors() to ActionServlet.destroy() on the 1.2.x branch yesterday, which causes a call to Introspector.flushCaches(). From the javadoc for the IntrospectorCleanupListener, it sounds like that's all it does.
This is referenced in Bug http://issues.apache.org/bugzilla/show_bug.cgi?id=14042
Note that in this bug, Wendy S. reported that even implementing this in her own code did not resolve the memory leak issues, although Tobias L. said that it did.
Since at this time there are no known cleanup steps which Struts should be taking, I closed that ticket, but if anyone can provide more information about potential leaks, that ticket could be reopened or a new one created.
In the meantime, using the IntrospectorCleanupListener is probably the easiest way to get that done without having to patch code -- I can't see any reason it would be a problem. There are a couple of other things which happen in PropertyUtils.clearDescriptors() -- if you wanted to be more complete, you might write a simple ServletContextListener modeled on the Spring one which called PropertyUtils.clearDescriptors() in its contextDestroyed() method. That might gain you a little bit more.
Joe
In the environments that I typically work in, production releases are handled by a release manager(s). When a new release goes out, the server is usually brought down and the new build is pushed out, then brought back up. This being done after normal working hours of course.
I'd be interested to hear if you are using it successfully in a production environment. I'd also be interested in how many times and why you need to reload a production application. Using something like this during development is a no-brainer, but I was just wondering.
--
Joe Germuska [EMAIL PROTECTED] http://blog.germuska.com "Narrow minds are weapons made for mass destruction" -The Ex