Contexts and Dependency Injection 1.2 동작 변경사항

CDI(Contexts and Dependency Injection) 1.2 구현에는 CDI 1.0에서 마이그레이션된 애플리케이션이 CDI 1.2에서 다르게 동작하거나 실패하도록 만드는 몇 가지 동작 변경사항이 포함되어 있습니다.

동작 변경사항을 고려하여, 각 서버 인스턴스에 대해 CDI 1.0 기능 구현과 CDI 1.2 기능 구현 중 하나를 선택할 수 있습니다. 필요한 동작이 CDI 1.2 기능에만 포함되어 있는 경우에는 CDI 1.2 기능을 사용해야 합니다. CDI 1.2 기능의 동작 변경사항이 기존 애플리케이션에 부정적인 영향을 미치는 경우, CDI 1.0 기능을 사용하면 해당 애플리케이션에 대해 기존 동작이 유지됩니다. CDI 1.0 기능과 CDI 1.2 기능은 서로 호환되지 않으므로 같은 서버에서 이러한 기능을 둘 다 사용할 수는 없습니다. 두 기능을 모두 구성하면 서버에서 구성 오류가 발생합니다.

CDI 1.0 기능은 CDI의 Apache OpenWebBeans 구현으로 빌드되었습니다. CDI 1.2 기능은 CDI의 Weld 구현에서 빌드되었습니다. 작성된 동작 변경사항은 두 구현 간의 차이점 때문입니다.

대화 ID CID

CDI 1.0 구현에서는 CID가 글로벌 범위에서 고유합니다. CDI 1.2에서 이는 각 HTTP 세션마다 고유합니다. 이 동작은 CDI 스펙을 따르는 것이며 Weld에 의해 선택된 규칙입니다. 글로벌 범위에서 고유한 CID를 얻으려면 대화 시작 시에 Conversation.begin을 호출하여 CID를 지정해야 합니다.

beans.xml 파일의 스키마 참조

CDI 1.2 구현에서, 다음은 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" 
올바르지 않은 스키마를 사용하면 서버에서 예외 오류가 발생합니다. org.jboss.weld.xml.disableValidating=true JVM 특성을 설정함으로써 beans.xml 파일의 유효성 검증을 끌 수 있으며, 이는 오류의 발생도 방지합니다. beans.xml 파일이 데코레이터 또는 인터셉터를 지정하는 경우에는 올바른 스키마가 사용되어야 하며, 그렇지 않으면 데코레이터 및 인터셉터가 올바르게 인스턴스화되지 않습니다.

암시적 Bean 아카이브

CDI 1.2 구현은 두 가지의 서로 다른 Bean 아카이브 유형(명시적 및 암시적)을 정의합니다.

명시적 Bean 아카이브는 beans.xml 파일을 포함하는 아카이브입니다.
  • 버전 번호(1.1 이상) 포함, Bean 발견 모드 all 사용
  • 버전 번호 없이
  • 비어 있는 파일

2.5.1절 "Bean 정의 어노테이션" 또는 하나 이상의 세션 Bean에 정의되어 있는 대로, 암시적 Bean 아카이브는 Bean 정의 어노테이션이 있는 하나 이상의 Bean 클래스가 포함된 기타 아카이브입니다. Java™ EE 플랫폼용 Contexts and Dependency Injection 스펙을 참조하십시오.

스키마를 CDI 1.2 구현으로 업데이트할 때 Bean 아카이브를 명시적으로 유지하려면 Bean 발견 모드를 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"
bean-discovery-mode="all"
		version="1.1">
참고: 암시적 Bean 아카이브는 Bean 정의 어노테이션이 있는 Bean만 발견합니다.
이 새 유형의 Bean 아카이브는 CDI Bean 아카이브에 적합하지 않은 아카이브가 될 수도 있으나, CDI 1.2 구현에서는 이러한 아카이브가 암시적 Bean 아카이브가 됩니다. Bean 발견 모드가 none으로 설정된 beans.xml 파일을 추가하면 이 아카이브가 Bean 아카이브가 되는 것을 방지하여 이러한 동작을 중지할 수 있습니다. 또 대체 솔루션은 Liberty 서버에 대해 server.xml 파일에 다음 특성을 추가하는 것입니다.
<cdi12 enableImplicitBeanArchives="false"/>
이 특성을 false로 설정하면 beans.xml 파일이 없는 아카이브가 암시적 Bean 아카이브가 되지 않습니다.

이 특성을 false로 설정하면 시작 시간에 성능이 향상됩니다.


주제의 유형을 표시하는 아이콘 개념 주제



시간소인 아이콘 마지막 업데이트 날짜: Monday, 5 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=cwlp_cdi_behavior
파일 이름: cwlp_cdi_behavior.html