Hi, if user uses plain old JSF style with managed beans like:
#{sessionScope.mySessionScopedBean} or #{requestScope.myRequestScopedBean} or #{requestScope.varFromDataTable.property} it can achieve excellent performance during render response phase, because every EL resolution takes only two steps: 1) o.a.m.ImplicitObjectResolver resolves sessionScope or requestScope to java.util.Map 2) javax.el.MapELResolver reads map.get("mySessionScopedBean") and sets elContext.setPropertyResolved (at first access ManagedBeanResolver must create bean instance but we can ignore it for simplicity). Specially if user uses EL resolvers ordering [1] and creates chain of (ImlicitObjectResolver,MapELResolver, other resolvers) then resolving takes only two first resolvers. Now compare it with situation where CDI is used. Because CDI/OWB resolver is not so fast as default el resolvers, common usage is put it at bottom of resolvers chain with OpenWebBeansELResolverComparator. Then resolving must go thru all ELresolvers in chain (12 or more resolvers) to find a @Named bean. How to improve this? One thing can be use custom implicit object for this 1) create ImplicitObjectsProvider SPI interface in myfaces 2) CDI and CDI extension will add own implementation of myfaces ImlicitObject, for example #{codiWindowScope} from CODI 3) the resolved value from implicit object can mimic the map interfaces (for example WindowScopeMap) to preserve behaviour of servlet scopes and to use MapELResolver WDYT? Any other ideas? Regards, Kočičák [1] https://cwiki.apache.org/MYFACES/elresolver-ordering.html