EJB 1.1에서 EJB 2.x로 변환된 프로젝트의 경우 기존 EJB 1.1
코드를 EJB 2.x로 마이그레이션하려면 단계를 수행해야 합니다.
이 태스크 정보
참고: EJB 2.x Bean은 EJB 2.x 프로젝트에서만 지원됩니다(2.x 프로젝트에서는
1.1 Bean도 지원함).
- CMP 1.1 Bean의 경우 각 CMP 필드를 추상 getXXX 및 setXXX 메소드로 바꾸십시오.
(Bean 클래스는 추상이어야 합니다.)
- CMP의 경우 1차 키에 대해 추상 getXXX 및 setXXX 메소드를
작성하십시오.
- CMP 1.1 파인더 메소드의 경우 각 파인더 메소드에 대해 EJBQL(EJB
조회 언어) 메소드를 작성하십시오.
참고: 버전 7.5
에서는 EJB 조회 언어에 다음과 같은 제한사항이 있습니다.
- 다른 EJB에 대한 관계로 이루어진 키를 포함하는 EJB와 관련한 EJB 조회 언어 조회는
올바르지 않은 것으로 표시되며 배치 시 오류가 발생합니다.
- IBM® EJB
조회 언어 지원은 일부 제한사항을 완화하고 DB2®
기능을 추가하는 등 다양한 방법으로 EJB 2.x 스펙을 확장합니다.
다양한 벤더 데이터베이스 또는 EJB 배치 도구 사이의 이식성이 중요한 경우
EJB 2.x 스펙의 제 11 장에 설명된 지시사항을 엄격하게 준수하여 모든 EJB
조회 언어 조회를 주의해서 작성해야 합니다.
참고: Rational® Application
Developer V7.5에서는 EJB 조회 언어에 다음과 같은 제한사항이 있습니다.
- EJB 1.1 레벨 Bean의 경우 IBM에서 EJBQL을 기반으로 하는
파인더를 지원하는 확장을 제공합니다. 이를 사용하는 EJB가 2.x EJB로 마이그레이션되면
EJBQL 조회에 사용된 이전의 추상 스키마 이름이 마이그레이션 프로그램에서 EJB에 지정하는 추상 스키마 이름과 일치하지 않습니다. 이로 인해
"WQRY0025E: 추상 스키마 이름 ResultBean이 정의되지 않음"과 같은 오류가 문제점 보기에 표시됩니다.
마이그레이션된 EJB의 추상 스키마 이름과 일치하도록 쿼리의 추상 스키마 이름을 수동으로 수정합니다.
- CMP 1.1 파인더의 경우 java.util.Enumeration 대신 java.util.Collection을 리턴합니다.
- CMP 1.1 Bean의 경우 ejbCreate() 및 코드 전체에서 this.field = value의 모든 발생을
setField(value)로 변경하십시오.
- 비애플리케이션 예외에 대한 예외 처리(롤백 동작) 업데이트:
- java.rmi.RemoteException 대신 javax.ejb.EJBException을
처리하여 비애플리케이션 예외를 보고하십시오.
- EJB 2.x 및 1.1에서는 인스턴스에 의해 발생한 모든 비애플리케이션 예외로
인해 인스턴스가 실행된 트랜잭션이 롤백되고 인스턴스가 삭제됩니다.
- 애플리케이션 예외에 대한 예외 처리(롤백 동작) 업데이트:
- EJB 2.x 및 1.1에서는 애플리케이션 예외로 인해 컨테이너가 트랜잭션을
자동으로 롤백하지 않습니다.
- EJB 1.1에서는 인스턴스가 EJBContext 오브젝트에서 setRollbackOnly()
메소드를 사용하여 호출된 경우에만 컨테이너가 롤백을 수행합니다.
- 애플리케이션 특정 기본값의 CMP 설정이 ejbCreate 내부에 있도록
업데이트하십시오(EJB 1.1 컨테이너는 이전의 애플리케이션 특정 기본값을 겹쳐쓰는
ejbCreate을 호출하기 전에 모든 필드를 일반적인 기본값으로 설정하므로
글로벌 변수를 사용하지 않음).