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 파일에서 스키마 참조

다음 스키마 예는 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 아카이브의 유형을 정의합니다.

명시적 Bean 아카이브는 다음 특성 중 하나를 갖는 beans.xml 파일을 포함하는 아카이브입니다.
  • 1.1(또는 그 이상)의 버전 번호, 및 all의 bean-discovery-mode를 가짐
  • 버전 번호 없음
  • 비어 있는 파일

내재적 Bean 아카이브는 다른 모든 아카이브로, 2.5.1절, "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"
</beans>
참고: 내재적 Bean 아카이브는 Bean 정의 어노테이션을 갖는 Bean만 검색합니다.

이 새 유형의 Bean 아카이브는 CDI Bean 아카이브가 되지 않을 아카이브가 될 수 있지만, CDI 1.2 구현에서는 내재적 Bean 아카이브가 됩니다. 이 작동을 중지하기 위해 Bean 검색 모드가 none으로 설정된 beans.xml 파일을 추가하여 아카이브가 Bean 아카이브가 되지 못하게 막을 수 있습니다. 대체 솔루션으로서, 시스템 특성 com.ibm.ws.cdi.enableImplicitBeanArchivesfalse로 설정하십시오. 이 특성을 false로 설정하면 beans.xml 파일이 없는 아카이브가 내재적 Bean 아카이브가 되지 않으며 시작 시간을 줄입니다. 시스템 특성을 설정하는 방법을 알려면 Java 가상 시스템 설정을 참조하십시오.

라이프사이클 인터셉터

다음 인터셉터 바인딩이 라이프사이클 인터셉터에서 선언되는 경우 ElementType.TYPE이 유일하게 허용되는 대상입니다.
@InterceptorBinding
@Retention( RetentionPolicy.RUNTIME )
@Target( {ElementType.TYPE, ElementType.METHOD} )
public @interface SFCDIInterceptorBinding {} 
 

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



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