Contexts and Dependency Injection 1.2 작동 변경
CDI(Contexts and Dependency Injection) 1.2 구현에는 CDI 1.0에서 마이그레이션된 애플리케이션이 CDI 1.2에서 다르게 작동하거나 실패하게 만들 수 있는 몇 가지 작동 변경이 포함되어 있습니다.
CDI 1.0이 CDI의 Apache OpenWebBeans 구현에 빌드되지만, CDI 1.2는 Weld 구현에 빌드됩니다. 도입된 작동 변경은 두 구현에서의 차이를 반영합니다.
대화 ID CID
CDI 1.0 구현에서는 CID가 글로벌하게 고유합니다. CDI 1.2에서는 HTTP 세션당 고유합니다. 이 작동은 CDI 스펙과 일치하며 Weld에 의해 구현됩니다. 글로벌하게 고유한 CID를 얻으려면 Conversation.begin을 호출하여 CID가 대화 시작 시에 지정되어야 합니다.
beans.xml 파일에서 스키마 참조
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"
올바르지 않은
스키마를 사용하는 경우, 서버가 예외 오류를 제공합니다. beans.xml
파일의 유효성 검증을 끄고 오류를 막으려면 org.jboss.weld.xml.disableValidating=true를
설정하십시오. beans.xml 파일이
데코레이터 또는 인터셉터를 지정하는 경우 올바른 스키마가 사용되어야 하며, 그렇지 않으면
데코레이터와 인터셉터가 올바르게 인스턴스화되지 않습니다. 내재된 Bean 아카이브
CDI 1.2 구현은 명시적 및 내재적의 두 가지 Bean 아카이브의 유형을 정의합니다.
- 1.1(또는 그 이상)의 버전 번호, 및 all의 bean-discovery-mode를 가짐
- 버전 번호 없음
- 비어 있는 파일
내재적 Bean 아카이브는 다른 모든 아카이브로, 2.5.1절, "Bean 정의 어노테이션"의 스펙에서 정의되는 대로의 Bean 정의 어노테이션을 갖는 하나 이상의 Bean 클래스 또는 하나 이상의 세션 Bean을 포함합니다. 스펙, Java™ EE 플랫폼용 Contexts and Dependency Injection을 참조하십시오.
<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="all" version="1.1"
</beans>
이 새 유형의 Bean 아카이브는 CDI Bean 아카이브가 되지 않을 아카이브가 될 수 있지만, CDI 1.2 구현에서는 내재적 Bean 아카이브가 됩니다. 이 작동을 중지하기 위해 Bean 검색 모드가 none으로 설정된 beans.xml 파일을 추가하여 아카이브가 Bean 아카이브가 되지 못하게 막을 수 있습니다. 대체 솔루션으로서, 시스템 특성 com.ibm.ws.cdi.enableImplicitBeanArchives를 false로 설정하십시오. 이 특성을 false로 설정하면 beans.xml 파일이 없는 아카이브가 내재적 Bean 아카이브가 되지 않으며 시작 시간을 줄입니다. 시스템 특성을 설정하는 방법을 알려면 Java 가상 시스템 설정을 참조하십시오.
라이프사이클 인터셉터
@InterceptorBinding
@Retention( RetentionPolicy.RUNTIME )
@Target( {ElementType.TYPE, ElementType.METHOD} )
public @interface SFCDIInterceptorBinding {}