При развёртывании приложения Java EE CDI ищет компоненты внутри архивов бинов. Архив бинов — это любой модуль, содержащий бины, которые могут управляться и инъецироваться средой выполнения CDI. Существует два вида архивов бинов: явные и неявные.
Явный архив бинов — это архив, содержащий дескриптор развёртывания beans.xml
, который может быть пустым файлом, не содержать номера версии или содержать номер версии 1.1 с атрибутом bean-discovery-mode
, установленным в all
. Например:
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
version="1.1" bean-discovery-mode="all">
...
</beans>
Любые бины явного архива могут управляться и инъецироваться CDI, кроме отмеченных @Vetoed
.
Неявный архив бинов — это архив, содержащий некоторые бины, аннотированные типом области видимости, не содержащий дескриптор развёртывания beans.xml
или содержащий дескриптор развёртывания beans.xml
с атрибутом bean-discovery-mode
, установленным в annotated
.
В неявном архиве только бины, аннотированные типом области видимости, могут управляться и инъецироваться CDI.
Для веб-приложения дескриптор развёртывания beans.xml
, если он есть, должен находиться в каталоге WEB-INF
. Для модулей EJB или JAR-файлов дескриптор развёртывания beans.xml
, если он присутствует, должен находиться в каталоге META-INF
.