O CDI varre beans implícitos quando não há nenhum arquivo beans.xml

A especificação Contexts and Dependency Injection (CDI) 1.1 introduziu o modo de descoberta de bean implícito, resultando em mudanças de comportamento e desempenho a partir da implementação do Java Platform, Enterprise Edition (Java EE) 6 CDI 1.0 no WebSphere Application Server.

Essa regra sinaliza a pasta WEB-INF ou META-INF se o projeto não contiver um arquivo beans.xml. Ao mover do Java EE 6 CDI 1.0 para o Java EE 7 CDI 1.1 ou mais recente, a descoberta de bean implícito resulta em todos os arquivos WAR e JAR sendo varridos pelo tempo de execução, mesmo se eles não tiverem um arquivo beans.xml. Isso pode levar à degradação do desempenho da descoberta de bean se você ativar o cdi-1.2 no Liberty.

No Java EE 7, se nenhum arquivo beans.xml estiver definido, o tempo de execução varre automaticamente as anotações de definição de bean. Para desativar esse comportamento, inclua um arquivo beans.xml com o modo de descoberta de bean configurado para none, conforme mostrado no exemplo a seguir.


<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" 
		  		      bean-discovery-mode="none" version="1.1">
</beans>

No Liberty, é possível também desativar esse comportamento, incluindo a propriedade a seguir no arquivo server.xml.


<cdi12 enableImplicitBeanArchives="false"/>

No WebSphere Application Server tradicional, esse comportamento pode ser desativado das maneiras a seguir:

Para obter mais informações sobre a configuração dessas propriedades no WebSphere tradicional, veja a documentação Propriedades customizadas para melhorar a inicialização do aplicativo no WebSphere Application Server.

Para obter mais informações sobre a implementação do Java EE 7 CDI 1.2, consulte Mudanças de comportamento do Contexts and Dependency Injection 1.2.