При развёртывании приложения 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.