geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jack Cai <greensi...@gmail.com>
Subject Re: Difference in start/stop and restart behavior
Date Thu, 13 Aug 2009 04:11:15 GMT
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 <kevan.miller@gmail.com>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

Mime
View raw message