Interface CDI11Bootstrap
-
- All Superinterfaces:
Bootstrap
public interface CDI11Bootstrap extends Bootstrap
An extension toBootstrap
which allows weld to perform type discovery as required by CDI 1.2. Each CDI 1.2 compatible integrator should use this interface. Application container initialization API for Weld. To initialize the container you must call, in this order:startExtensions(Iterable)
startContainer(String, Environment, Deployment)
Bootstrap.startInitialization()
Bootstrap.deployBeans()
Bootstrap.validateBeans()
Bootstrap.endInitialization()
Bootstrap.shutdown()
- Author:
- Pete Muir, Jozef Hartinger
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description Bootstrap
startContainer(String contextId, Environment environment, Deployment deployment)
Creates the application container: Checks that the services required by the environment have been provided Adds container provided services Creates and initializes the built in contexts Creates the managerTypeDiscoveryConfiguration
startExtensions(Iterable<Metadata<jakarta.enterprise.inject.spi.Extension>> extensions)
The container bootstrap sequence begins with initializing extensions.-
Methods inherited from interface org.jboss.weld.bootstrap.api.Bootstrap
deployBeans, endInitialization, getManager, loadExtensions, parse, parse, parse, parse, parse, parse, shutdown, startContainer, startInitialization, validateBeans
-
-
-
-
Method Detail
-
startExtensions
TypeDiscoveryConfiguration startExtensions(Iterable<Metadata<jakarta.enterprise.inject.spi.Extension>> extensions)
The container bootstrap sequence begins with initializing extensions. The container performs the following actions:
The container fires the
BeforeBeanDiscovery
event which allows extensions to register scopes and stereotypes. The container combines the registered scopes and stereotypes with scopes associated with the built-in contexts and built-in stereotypes and makes the resulting set available throughTypeDiscoveryConfiguration.getKnownBeanDefiningAnnotations()
Afterwards, an EE7-compatible integrator performs type discovery in the following locations:
- Library jars
- EJB jars or application client jars
- The WEB-INF/classes directory of a war
- Directories in the JVM classpath
These locations are referred to as available archives hereafter.
Next, the integrator builds the set of bean defining annotations. The set contains:
- The set of annotations returned from
TypeDiscoveryConfiguration.getKnownBeanDefiningAnnotations()
- Every Java annotation discovered by the integrator that is annotated with
NormalScope
orStereotype
The resulting set is referred to as bean defining annotations hereafter.
Next, the integrator processes available archives according to these rules. The rules are exclusive.
If an archive:
- contains the
beans.xml
file and the file does not contain thebean-discovery-mode
attribute, or - contains the
beans.xml
file and the value of thebean-discovery-mode
attribute is set toall
this archive is an explicit bean archive.
If an archive:
- contains the
beans.xml
file and thebean-discovery-mode
attribute is set toannotated
, or - does not contain the
beans.xml
file nor any implementation of theExtension
interface but the archive contains types annotated with a bean defining annotation or session beans
this archive is an implicit bean archive.
If an archive:
- contains the
beans.xml
file and thebean-discovery-mode
attribute is set tonone
, or - does not contain the
beans.xml
file and contains an implementation of theExtension
interface, or - does not contain the
beans.xml
file and does not contain any types annotated with a bean defining annotation nor session bean
this archive is not a bean archive.
For each explicit bean archive the integrator creates an instance of
BeanDeploymentArchive
representing this archive. TheBeanDeploymentArchive.getBeanClasses()
orBeanDeploymentArchive.getLoadedBeanClasses()
method returns a collection of all types present within the archive. Filtering rules defined inBeansXml.getScanning()
are not required to be applied by the integrator and are applied later on by Weld. TheBeanDeploymentArchive.getEjbs()
method returns a collection of EJB descriptors for EJBs present in the archive.For each implicit bean archive the integrator creates an instance of
BeanDeploymentArchive
representing this archive. TheBeanDeploymentArchive.getBeanClasses()
orBeanDeploymentArchive.getLoadedBeanClasses()
method of the bean archive returns all the types found in the archive which are annotated with a bean defining annotations or are Session bean definitions. Filtering rules (BeansXml.getScanning()
) are not required to be applied by the integrator. TheBeanDeploymentArchive.getEjbs()
method returns a collection of EJB descriptors for Session beans present in the archive.Initially, the integrator does not need to create a
BeanDeploymentArchive
instance for an archive which is not a bean archive. Note that although these archives are ignored when building the initial collection of bean archives, the integrator may be required to create aBeanDeploymentArchive
later upon a call toDeployment.loadBeanDeploymentArchive(Class)
. For example, when the method is called for a extension class that is deployed in an archive that is not a bean archive.- Parameters:
extensions
- discovered CDI extensions- Returns:
- TypeDiscoveryConfiguration type discovery configuration including known bean defining annotations
-
startContainer
Bootstrap startContainer(String contextId, Environment environment, Deployment deployment)
Creates the application container:- Checks that the services required by the environment have been provided
- Adds container provided services
- Creates and initializes the built in contexts
- Creates the manager
In addition to
Bootstrap.startContainer(Environment, Deployment)
, this method allows an identifier (contextId) to be assigned to the container. This identifier will be used to identify this application when invokingSingleton
methods.- Parameters:
contextId
- the identifier of this application container instanceenvironment
- the environment in use, by defaultEnvironments.EE
deployment
- the Deployment to be booted- Returns:
- self
- Throws:
IllegalStateException
- if not all the services required for the given environment are available
-
-