[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