Hi Laird,
The reason why it is possible to register multiple context objects for a
scope is that a particular context implementation may be intended for a
specific use case/technology. Take for example the request context - it
should be active during HTTP requests, async EJB invocation, MDB, etc.
It wouldn't be practical to only have one Context implementation for all
use cases.
The spec is very clear that this should be possible. See for example
6.5.1. The active context object for a scope:
"The container must search for an active instance of Context associated
with the scope type."
And even 6.2. The Context interface:
"A context object may be defined for any of the built-in scopes and
registered with the container using the AfterBeanDiscovery event as
described in AfterBeanDiscovery event."
HTH
Martin
Dne 01. 11. 18 v 22:46 Laird Nelson napsal(a):
I noticed that BeanManagerImpl permits many Contexts to be indexed
under
a given scope type
<
https://github.com/weld/core/blob/d8a8cb64f3a9751dcac07c8d9eda0dd3a0e682b...;.
Why is that?
The CDI 2.0 specification says
<
http://docs.jboss.org/cdi/spec/2.0/cdi-spec.html#contexts>:
"Associated with every scope type is a context object."
I took "a context object" to mean "exactly one context object" but
maybe
I'm mistaken? Obviously Weld can do things outside of the specification
but I was curious what the use case might be here.
I do understand that certainly only one Context of a given scope type
may be active. I was just curious why the container even permits many
to be registered.
Best,
Laird
_______________________________________________
weld-dev mailing list
weld-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/weld-dev
--
Martin Kouba
Senior Software Engineer
Red Hat, Czech Republic