CDI(Contexts and Dependency Injection) 1.1 스펙에서 내재적 Bean 검색 모드가 도입되었으며 그 결과 WebSphere Application Server의 Java EE(Java Platform, Enterprise Edition) 6 CDI 1.0 구현에서와 다르게 동작 및 성능이 변경되었습니다. 내재적 Bean은 Bean 정의 어노테이션 또는 하나 이상의 세션 Bean이 있는 Bean 클래스가 하나 이상 포함된 아카이브입니다.
Java EE 6 CDI 1.0에서 Java EE 7 CDI 1.1 이상으로 이동하는 경우, 내재적 Bean 검색으로 인해 런타임이 모든 WAR 및 JAR 파일을 스캔합니다(beans.xml 파일이 없는 WAR 및 JAR 파일도 포함). 이러한 스캔은 Java EE 6 CDI 1.0에서와 다른 변경된 동작입니다. Java EE 6 CDI 1.0의 경우 beans.xml 파일이 누락되면 애플리케이션에서 아카이브가 스캔되지 않습니다.
이 규칙은 beans.xml 파일이 없는 모든 WAR 및 JAR 파일의 다음 Bean 정의 어노테이션과 Enterprise JavaBeans(EJB) 세션 Bean에 플래그를 지정합니다.
2진 애플리케이션 스캐너는 @NormalScope이라는
어노테이션이 있는 어노테이션 클래스에 플래그를 지정합니다. Eclipse 기반 애플리케이션 소스 스캐너와 달리, 이 스캐너는
보통 범위 유형의 어노테이션이 있는 클래스는 발견하지
않습니다. 이러한 어노테이션은 이들을 명시적으로 또는 내재적으로
사용하는 beans.xml 파일의 범위
밖에서 플래그 지정될 수 있습니다.
런타임 동안 WAR 또는 JAR 레벨에서 이러한 CDI 동작 변경을 사용하지 않으려면, 다음 예에 표시된 바와 같이 Bean 검색 모드가 none으로 설정된 beans.xml 파일을 추가하십시오.
|
Liberty에서도 다음 특성을 server.xml 파일에 추가하여 이 동작을 사용 안하므로 설정할 수 있습니다.
|
Java EE 7 CDI 1.2 구현에 대한 자세한 정보는 Contexts and Dependency Injection 1.2 동작 변경사항을 참조하십시오.