[cdi-dev] CDI.current() in AfterDeploymentValidation

Martin Kouba mkouba at redhat.com
Mon Apr 3 08:59:35 EDT 2017


John,

that's not true. I'm saying that calling CDI.current() and 
CDI.getBeanManager() is valid. However, it is not portable (and NOT 
supported by Weld ATM) to call other CDI methods (CDI.select() etc.) 
before the application initialization is completed.

See also 11.3.1. Obtaining a reference to the CDI container:
"A portable extension or other object may obtain a reference to the 
current container by calling CDI.current(). CDI.getBeanManager() may be 
called at any time after the container fires the BeforeBeanDiscovery 
container lifecycle event until the container fires the BeforeShutdown 
container lifecycle event. Other methods on CDI may be called after the 
application initialization is completed until the application shutdown 
starts. If methods on CDI are called at any other time, non-portable 
behavior results."

I believe the spec is clear...

Martin

Dne 3.4.2017 v 14:49 John Ament napsal(a):
> All,
>
>
> So Martin below is saying its valid, but then in the ticket is saying
> its not valid.  I'll wait for others to voice opinions on this one.
>
>
> John
>
>
>
>
> ------------------------------------------------------------------------
> *From:* Martin Kouba <mkouba at redhat.com>
> *Sent:* Monday, April 3, 2017 2:48 AM
> *To:* John Ament; cdi-dev
> *Subject:* Re: [cdi-dev] CDI.current() in AfterDeploymentValidation
>
> Hi John,
>
> I think it's valid to call CDI.current() from within an extension. WRT
> Weld - what version and environment do you use? There was an issue in
> Weld SE which should be fixed in 2.4.2 (see also WELD-2256 [1]).
>
> Martin
>
> [1]
> https://issues.jboss.org/browse/WELD-2256
>
> Dne 3.4.2017 v 04:36 John Ament napsal(a):
>> So I know during the reception of AfterDeploymentValidation, the
>> container isn't fully bootstrapped.  However, its valid to look up
>> beans.  I would therefore expect that CDI.current().select()... to work
>> fine.  However, at least in Weld it doesn't.  This is because
>> CDI.current() cannot figure out what container to use (it's not fully
>> bootstrapped yet).  So my question - is this a Weld issue, or a spec
>> clarification?
>>
>>
>> John
>>
>> ------------------------------------------------------------------------
>> NOTICE: This e-mail message and any attachments may contain
>> confidential, proprietary, and/or privileged information which should be
>> treated accordingly. If you are not the intended recipient, please
>> notify the sender immediately by return e-mail, delete this message, and
>> destroy all physical and electronic copies. Thank you.
>>
>>
>> _______________________________________________
>> cdi-dev mailing list
>> cdi-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/cdi-dev
>>
>> Note that for all code provided on this list, the provider licenses the code under the Apache License, Version 2 (http://www.apache.org/licenses/LICENSE-2.0.html). For all other ideas
> provided on this list, the provider waives all patent and other
> intellectual property rights inherent in such information.
>>
>
> --
> Martin Kouba
> Senior Software Engineer
> Red Hat, Czech Republic
> ------------------------------------------------------------------------
> NOTICE: This e-mail message and any attachments may contain
> confidential, proprietary, and/or privileged information which should be
> treated accordingly. If you are not the intended recipient, please
> notify the sender immediately by return e-mail, delete this message, and
> destroy all physical and electronic copies. Thank you.



More information about the cdi-dev mailing list