Affects Version/s: liferay-faces-2.1.2-ga3, liferay-faces-3.0.2-legacy-ga3, liferay-faces-3.0.2-ga3, liferay-faces-3.1.2-ga3
Component/s: Liferay Faces Bridge Impl / Demos / Tests
Part of the fix for
FACES-1470 was discovering the Mojarra InjectionProvider. The original mechanism was to have BridgeSessionListener.java discover it during context initialization, but that only worked if the Mojarra ConfigureListener was explicitly registered in WEB-INF/web.xml descriptor before the BridgeSessionListener, like this:
In addition, a special issue was create (
FACES-1511) in order to direct developers to a place where they could investigate how to fix the "Unable to determine Mojarra InjectionProvider" warning in the server console.
But upon closer inspection of the Mojarra source code, it turns out that ApplicationAssociate().getInstance(ExternalContext).getInjectionProvider() can be called either during context initialization, or during execution of the JSF lifecycle.
The main benefit is that if ConfigureListener and BridgeSessionListener are not explicitly specified in the WEB-INF/web.xml descriptor (in that order), then Liferay Faces Bridge will still be able to discover the Mojarra InjectionProvider.
An additional benefit is that ConfigureListener does not need to appear in the WEB-INF/web.xml descriptor, since the jsf-impl.jar dependency has a TLD file that declares the Mojarra ConfigureListener in a TLD <listener> element.
FACES-1655, the BridgeSessionListener will not need to appear in the WEB-INF/web.xml descriptor either.