Agreed. Restart should have the same effect as "Stop + Start". In the "o.a.g.kernel.config.ConfigurationStatus, "gc" is enabled for stop by default, but there is no gc option (stop parent) for restart. Maybe that's the place to modify?
-Jack On Thu, Aug 13, 2009 at 8:19 AM, Kevan Miller <[email protected]>wrote: > > On Aug 12, 2009, at 6:08 AM, Ashish Jain wrote: > > Hi, >> >> Recently I have seen difference in the functionality of stop/start and >> restart options available against each module. In case of stop/start I see >> old classloaders >> being discarded and new ones being created. In case of restart same old >> classloaders are used. >> >> I am attaching a sample DummyProject here and an explanation of how it >> works >> >> It has three classes: TestServlet , TestService and TestBean >> >> 1. Request comes to the TestServlet => Console prints “In TestServlet” >> 2. TestServlet makes a call to the TestService class. TestService class >> has a static variable called testBean of type TestBean. This variable is an >> initialized during class loading. >> 4. When the call comes to TestService, if the static variable is created >> then the Console prints “In TestBean constructor”. In case the static >> variables isn't created then this statement doesn’t get printed to the >> console. >> 5. After which console prints “In TestService class” >> >> Steps to run the application: >> 1. Deploy this application to WAS community edition >> 2. Start the application >> 3. Hit the <WAS url>/<context>/TestServlet >> 4. Check the console >> >> If static variables are created then all the three statements must appear >> as below in the console: >> => In TestServlet >> => In TestBean constructor >> => In TestService class >> >> Restart the application and follow steps 2, 3 and 4. Notice only first and >> last statements ('In TestServlet' & ' In TestService class') appear >> indicating that static variables aren't created. But when stop and the start >> this application, all the 3 statements appear. >> >> I would like to know if this difference is intended or does it require >> some fix so that restart behaves in a similar manner as stop/start? >> > > I'm not sure. My guess is that the differences are unintended, but I'd have > to spend some time to be sure... There may be some consequences to changing > this behavior. David J may have thoughts on this... > > A Stop is going to stop a configuration, then unload the configuration > (which will destroy the ClassLoader). > > A restart is going to stop a configuration, then start the same > configuration (reusing the same ClassLoader). Thus any static initialization > would have already occurred. > > Personally, I think a Restart should be functionally equivalent to > Stop/Start. > > --kevan
