Invalidate will get you 99% of the way there - it destroys all the beans, and 
clears the backing store. However it won't make the context inactive. So I 
guess I was wrong - you can restart the context effectively , but you can't 
discretely stop or start it…

On 19 Mar 2012, at 14:32, Gerhard Petracek wrote:

> hi pete,
> 
> in my test it worked
> with org.jboss.weld.context.ApplicationContext#invalidate
> 
> regards,
> gerhard
> 
> 
> 
> 2012/3/19 Pete Muir <pm...@redhat.com>
> 
>> You can't restart the application context in Weld.
>> 
>> I'll have to think on what this means for the API you propose, but my
>> first instinct is to say that we should offer any global start/stop context
>> APIs at all, but require users to activate the ones they want explicitly.
>> This is more code, but it seems to be the only portable and sane option.
>> 
>> On 19 Mar 2012, at 14:08, Gerhard Petracek wrote:
>> 
>>> hi mark,
>>> 
>>> @testing request scoped entity-managers:
>>> you still have #startContext and #stopContext
>>> 
>>> i haven't tested if weld destroys the beans 100% correctly (the wrong
>>> result of #isActive is the only issue i've seen with weld), but you get a
>>> new application scoped bean after calling #stopContexts.
>>> however, since a part of it is broken (or users have to use a
>> workaround),
>>> it doesn't make sense imo to provide such a "convenience" method which
>>> doesn't work correctly (out-of-the-box).
>>> 
>>> regards,
>>> gerhard
>>> 
>>> 
>>> 
>>> 2012/3/19 Mark Struberg <strub...@yahoo.de>
>>> 
>>>> Starting/stopping contexts in tests is exactly one of the use cases I
>> do a
>>>> lot. Especially to close any @RequestScoped EntityManager.
>>>> 
>>>> See also the blog post I wrote on the weekend:
>>>> 
>>>> 
>> https://struberg.wordpress.com/2012/03/17/controlling-cdi-containers-in-se-and-ee/
>>>> 
>>>> 
>>>> There is only one little annoyance. Both Weld and OWB do not like it if
>>>> the ApplicationContext gets stopped without restarting the CDI
>> container.
>>>> In Weld the ApplicationContext always reports isActive() true and in OWB
>>>> (depending on the configured proxy) we cache resolved contextual
>> instances
>>>> of @ApplicationScoped beans directly in the
>>>> ApplicationScopedBeanInterceptorHandler of their proxies.
>>>> If you need to restart your ApplicationContext with OWB you would need
>> to
>>>> configure the NormalScopedBeanInterceptorHandler for @ApplicationScoped
>>>> 
>>>> Just create a META-INF/openwebbeans/openwebbeans.properties and paste
>> the
>>>> following line into it:
>>>> 
>>>> configuration.ordinal=101
>>>> 
>> org.apache.webbeans.proxy.mapping.javax.enterprise.context.ApplicationScoped=org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandlerThe
>>>> syntax is:
>>>> org.apache.webbeans.proxy.mapping.[the fully qualified name of the scope
>>>> annotation]=[proxy method handler implementation]
>>>> 
>>>> The default config can be found here: [1]
>>>> 
>>>> LieGrue,
>>>> strub
>>>> 
>>>> [1]
>>>> 
>> https://svn.apache.org/repos/asf/openwebbeans/trunk/webbeans-impl/src/main/resources/META-INF/openwebbeans/openwebbeans.properties
>>>> 
>>>> 
>>>> ----- Original Message -----
>>>>> From: Pete Muir <pm...@redhat.com>
>>>>> To: deltaspike-dev@incubator.apache.org
>>>>> Cc: Mark Struberg <strub...@yahoo.de>
>>>>> Sent: Monday, March 19, 2012 2:29 PM
>>>>> Subject: Re: [DISCUSS] start()/boot() vs stop()/shutdown()
>>>>> 
>>>>> 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 <strub...@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.petra...@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 <pm...@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.petra...@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 <strub...@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
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>>>> 
>> 
>> 

Reply via email to