deltaspike-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Pete Muir <pm...@redhat.com>
Subject Re: [DISCUSS] start()/boot() vs stop()/shutdown()
Date Mon, 19 Mar 2012 13:29:11 GMT
What about if I wanted to stop the contexts and then start them again, without restarting the
container? This is definitely useful in tests!

Or am I confused about terminology again? AFAIK We talk about starting/stopping a session
or request which refers to the session or request boundaries.

On 19 Mar 2012, at 13:15, Gerhard Petracek wrote:

> hi mark,
> 
> if all supported containers stop the contexts during the shutdown
> (without #stopContexts) >and< we don't have enough use-cases for
> #startContexts, we don't need #startContexts and #stopContexts at all (they
> are also just convenience methods).
> 
> @comments in jira:
> as i see you added it to [1] and not to [2], however, if we remove
> something, we also have to check/update the documentation.
> 
> -> we need a better workflow for the api-design.
> 
> regards,
> gerhard
> 
> [1] https://issues.apache.org/jira/browse/DELTASPIKE-92
> [2] https://issues.apache.org/jira/browse/DELTASPIKE-106
> 
> 
> 
> 2012/3/19 Mark Struberg <struberg@yahoo.de>
> 
>> I think we do have this already as the containers do this internally
>> afaik. But you are right that we should add a test for it in the TCK!
>> 
>> We could e.g. introduce a @RequestScoped bean with a @PreDestroy which
>> sets a static boolean properlyDestroyed; to true; and test for it after the
>> container.shutdown();
>> 
>> LieGrue,
>> strub
>> 
>> 
>> 
>> ----- Original Message -----
>>> From: Gerhard Petracek <gerhard.petracek@gmail.com>
>>> To: deltaspike-dev@incubator.apache.org
>>> Cc:
>>> Sent: Monday, March 19, 2012 1:44 PM
>>> Subject: Re: [DISCUSS] start()/boot() vs stop()/shutdown()
>>> 
>>> hi mark,
>>> 
>>> 3 lines would mean that we agree on the merged shutdown and that isn't
>> what
>>> we have right now.
>>> 
>>> regards,
>>> gerhard
>>> 
>>> 
>>> 
>>> 2012/3/19 Pete Muir <pmuir@redhat.com>
>>> 
>>>> I'm strongly in favour of the slightly more verbose API that Mark
>>> proposes
>>>> where contexts are started/stopped separately from booting the
>> container.
>>>> For me, this is a semantically different operation (starting CDI is not
>>>> naturally associated with starting a session or a request). I don't
>>> think
>>>> reducing 3 lines -> 2 lines is really worth the drop in clarity it
>>> results
>>>> in.
>>>> 
>>>> I do think that shutdown() should automatically stop any contexts still
>>>> running. I realise this isn't symmetric however, which does make me
>>> pause
>>>> for thought.
>>>> 
>>>> So +1 to keeping the API as it is.
>>>> 
>>>> On 19 Mar 2012, at 12:30, Mark Struberg wrote:
>>>> 
>>>>>> that means you have to write 4 lines in >several< (for sure
>>> not all)
>>>>>> cases,
>>>>>> but you can do the same with 2 lines (with the convenience
>>> methods).
>>>>> 
>>>>> nope its 3 lines vs 2 lines ;)
>>>>> 
>>>>> boot();
>>>>> startyourcontexts
>>>>> shutdown();
>>>>> 
>>>>> 
>>>>> Maybe we should comment and test that the container must ensure that
>>> all
>>>> contexts get automatically stopped during a shutdown().
>>>>> But that should serve sufficiently.
>>>>> 
>>>>> 
>>>>>> at least we have to discuss it (instead of removing an existing
>>> api
>>>>>> "silently").
>>>>> 
>>>>> I guess there is more discussion and argumentation why I removed
>> those
>>>> methods in the JIRA ticket than for all the adding of those
>>> 'convenience'
>>>> methods in summary. Please look at the corresponding Jira ticket.
>>>>> 
>>>>> LieGrue,
>>>>> strub
>>>>> 
>>>>> 
>>>>> 
>>>>> ----- Original Message -----
>>>>>> From: Gerhard Petracek <gerhard.petracek@gmail.com>
>>>>>> To: deltaspike-dev@incubator.apache.org
>>>>>> Cc:
>>>>>> Sent: Monday, March 19, 2012 1:12 PM
>>>>>> Subject: Re: [DISCUSS] start()/boot() vs stop()/shutdown()
>>>>>> 
>>>>>> hi mark,
>>>>>> 
>>>>>> that means you have to write 4 lines in >several< (for sure
>>> not all)
>>>>>> cases,
>>>>>> but you can do the same with 2 lines (with the convenience
>>> methods).
>>>>>> if there was confusion about the previous convenience methods (i
>>> can't
>>>> see
>>>>>> it in the archive), it's just a matter of documentation (= one
>>> line of
>>>>>> javadoc).
>>>>>> at least we have to discuss it (instead of removing an existing
>>> api
>>>>>> "silently").
>>>>>> 
>>>>>> if we can't agree on such convenience methods, we have to
>>> merge the
>>>>>> shutdown logic. right now it's too error prone (see [1]).
>>>>>> 
>>>>>> regards,
>>>>>> gerhard
>>>>>> 
>>>>>> [1] https://issues.apache.org/jira/browse/DELTASPIKE-124
>>>>>> 
>>>>>> http://www.irian.at
>>>>>> 
>>>>>> Your JSF/JavaEE powerhouse -
>>>>>> JavaEE Consulting, Development and
>>>>>> Courses in English and German
>>>>>> 
>>>>>> Professional Support for Apache MyFaces
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 2012/3/19 Mark Struberg <struberg@yahoo.de>
>>>>>> 
>>>>>>> Hi!
>>>>>>> 
>>>>>>> This is related to
>>>>>>> 
>>>>>>> https://issues.apache.org/jira/browse/DELTASPIKE-123
>>>>>>> 
>>>>>>> We had this discussion on the list and I already got lots of
>>> questions
>>>> why
>>>>>>> we have those 'duplicated functions'.
>>>>>>> In fact I had to explain the differences a few times already
>>> thus I
>>>>>>> decided to drop the start() and stop() methods and make the
>>>> ContextControl
>>>>>>> easily accessible from the CdiContainer interface.
>>>>>>> 
>>>>>>> The current functionality is the following:
>>>>>>> * boot() will just boot the CDI container (Weld or OWB) and
>>> _not_ start
>>>>>>> any Contexts. We don't do this implicitly because we might
>>> not have all
>>>>>> the
>>>>>>> information. Of course this will have much more impact once we
>>> also
>>>>>>> implemented not only the startContext() and stopContext() in
>>> the
>>>>>>> ContextControl API but also added more information about e.g.
>>>> sessionId,
>>>>>>> etc.
>>>>>>> 
>>>>>>> 
>>>>>>> Especially if CDI is used in JavaSE we simply don't know
>>> _which_
>>>>>> Contexts
>>>>>>> are going to be used or if any of the built-in contexts is
>>> being used
>>>> at
>>>>>>> all. In Java SE it could be possible that the whole app just
>>> uses
>>>> custom
>>>>>>> scopes only!
>>>>>>> 
>>>>>>> Thus your code will always look like the following
>>>>>>>> CdiContainer cdiCtr =
>>> CdiContainerLoader.getCdiContainer();
>>>>>>>> cdiCtr.boot();
>>>>>>> 
>>>>>>> +
>>>>>>> 
>>>>>>>> cdiCtr.getContextControl(). ... start whatever builtin
>>> Context you
>>>>>> need.
>>>>>>> 
>>>>>>> Really, the use case that you like to start ALL Contexts is
>>> _not_ the
>>>>>>> default!
>>>>>>> 
>>>>>>> 
>>>>>>> Of course
>>>>>>> CdiContainer#shutdown() should also close all open built-in
>>> Contexts
>>>>>>> properly (We should add this to the JavaDoc).
>>>>>>> 
>>>>>>> Btw, I now used boot() and shutdown() because this is
>>> d'accord with the
>>>>>>> CDI specification (@Observes BeforeShutdown)
>>>>>>> 
>>>>>>> 
>>>>>>> Hope this helps understanding the situation.
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> Any objections?
>>>>>>> 
>>>>>>> 
>>>>>>> LieGrue,
>>>>>>> strub
>>>>>>> 
>>>>>>> 
>>>>>> 
>>>> 
>>>> 
>>> 
>> 


Mime
View raw message