MYFACES-4334
diff --git a/impl/src/main/java/org/apache/myfaces/util/ExternalSpecifications.java b/impl/src/main/java/org/apache/myfaces/util/ExternalSpecifications.java
index cd0214f..7cc25c1 100644
--- a/impl/src/main/java/org/apache/myfaces/util/ExternalSpecifications.java
+++ b/impl/src/main/java/org/apache/myfaces/util/ExternalSpecifications.java
@@ -84,8 +84,24 @@
return available;
});
- private static volatile Boolean cdiAvailable;
-
+ private static Lazy<Boolean> cdiAvailable = new Lazy<>(() ->
+ {
+ boolean available;
+ try
+ {
+ available = ClassUtils.classForName("javax.enterprise.inject.spi.BeanManager") != null;
+ }
+ catch (Throwable t)
+ {
+ //log.log(Level.FINE, "Error loading class (could be normal)", t);
+ available = false;
+ }
+
+ log.info("MyFaces Core CDI support " + (available ? "enabled" : "disabled"));
+
+ return available;
+ });
+
private static Lazy<Boolean> el3Available = new Lazy<>(() ->
{
boolean available;
@@ -133,22 +149,7 @@
public static boolean isCDIAvailable(ExternalContext externalContext)
{
- if (cdiAvailable == null)
- {
- try
- {
- cdiAvailable = ClassUtils.classForName("javax.enterprise.inject.spi.BeanManager") != null;
- }
- catch (Throwable t)
- {
- //log.log(Level.FINE, "Error loading class (could be normal)", t);
- cdiAvailable = false;
- }
-
- log.info("MyFaces Core CDI support " + (cdiAvailable ? "enabled" : "disabled"));
- }
-
- return cdiAvailable &&
+ return cdiAvailable.get() &&
externalContext.getApplicationMap().containsKey(AbstractFacesInitializer.CDI_BEAN_MANAGER_INSTANCE);
}