public class BeanManagerProvider extends Object implements javax.enterprise.inject.spi.Extension
This class provides access to the
by registering the current
BeanManager in an extension and
making it available via a singleton factory for the current application.
This is really handy if you like to access CDI functionality from places where no injection is available.
If a simple but manual bean-lookup is needed, it's easier to use the
As soon as an application shuts down, the reference to the
BeanManager will be removed.
BeanManager bm = BeanManagerProvider.getInstance().getBeanManager();
Attention: This method is intended for being used in user code at runtime.
If this method gets used during Container boot (in an Extension), non-portable
behaviour results. During bootstrapping an Extension shall @Inject BeanManager to get
access to the underlying BeanManager (see e.g.
This is the only way to guarantee to get the right
BeanManager in more complex Container scenarios.
|Constructor and Description|
|Modifier and Type||Method and Description|
By cleaning the final BeanManager map after the Deployment got Validated, we prevent premature loading of information from JNDI in cases where the container might not be fully setup yet.
Cleanup on container shutdown
Detect the right ClassLoader.
Allows to get the current provider instance which provides access to the current
Returns if the
It basically doesn't matter which of the system events we use, but basically we use the
public static boolean isActive()
BeanManagerProviderhas been initialized. Usually it isn't needed to call this method in application code. It's e.g. useful for other frameworks to check if DeltaSpike and the CDI container in general have been started.
public static BeanManagerProvider getInstance()
IllegalStateException- if the
BeanManagerProviderisn't ready to be used. That's the case if the environment isn't configured properly and therefore the
AfterBeanDiscoveryhasn't be called before this method gets called.
public void setBeanManager(@Observes javax.enterprise.inject.spi.AfterBeanDiscovery afterBeanDiscovery, javax.enterprise.inject.spi.BeanManager beanManager)
AfterBeanDiscoveryevent since it allows to use the
BeanManagerProviderfor all events which occur after the
afterBeanDiscovery- event which we don't actually use ;)
beanManager- the BeanManager we store and make available.
public javax.enterprise.inject.spi.BeanManager getBeanManager()
BeanManagerfor the current application (/
ClassLoader). This method will throw an
IllegalStateExceptionif the BeanManager cannot be found.
IllegalStateException- if the BeanManager cannot be found
public static ClassLoader getClassLoader(Object o)
o- if not
nullit may get used to detect the classloader.
ClassLoaderwhich should get used to create new instances
public void cleanupFinalBeanManagers(@Observes javax.enterprise.inject.spi.AfterDeploymentValidation adv)
public void cleanupStoredBeanManagerOnShutdown(@Observes javax.enterprise.inject.spi.BeforeShutdown beforeShutdown)
beforeShutdown- cdi shutdown event
Copyright © 2014 JBoss, a division of Red Hat. All Rights Reserved.