CMP(Container-Managed Persistence) 제한사항 및 예외

애플리케이션에 영향을 주는 일부 예외 소프트웨어는 CMP(Container-Managed Persistence) 기능을 제한할 수 있습니다. 그러나 이 제한사항을 해결할 수 있습니다.

각 경우에, 소프트웨어의 아주 구체적인 동작만이 CMP Bean에 대한 제한사항을 설정합니다. 다음 팁을 사용하면 이 동작을 방지할 수 있습니다.

CMP 배치 및 Sybase IMAGE 유형 제한

기본이 아니며 자연 JDBC 맵핑이 없는 CMP(Container-Managed Persistence)로 엔터프라이즈 Bean을 배치하면, 배치 도구는 CMP 유형을 데이터베이스의 2진 유형에 맵핑하며, 여기서 직렬화된 인스턴스로 저장됩니다. Sybase의 경우 도구는 JDBC 유형 LONG VARBINARY를 사용합니다. Sybase 드라이버는 LONG VARBINARY를 네이티브 유형 IMAGE로 맵핑합니다.

Sybase에서 VARBINARYIMAGE보다 제한사항이 적더라도, 255바이트의 크기로 제한되기 때문에 사용할 수 없으며, 이는 기본 직렬화된 Java™ 오브젝트에 비해 너무 작습니다.

IMAGE 유형에 대한 특정 제한사항은 다음과 같습니다.
  • IMAGE 유형을 SQL 조회의 WHERE 절에서 사용할 수 없습니다. 엔터프라이즈 Bean이 WHERE 절에 CMP 유형이 있는 EJB-QL 조회를 포함할 때마다 이 제한사항이 발생할 수 있으며, Sybase 관계형 데이터베이스에서 IMAGE 유형으로 맵핑됩니다.
  • IMAGE 유형을 DISTINCT로 표시된 select 조회에서 사용할 수 없습니다. 이 상황은 다음 사용자 시나리오에서 발생합니다.
    • DISTINCT 키워드가 IMAGE로 맵핑된 Java 유형이 있는 EJB-QL select 조회에서 지정됩니다.
    • 엔터프라이즈 Bean에 java.util을 리턴하는 ejbSelect() 메소드 및 파인더가 있습니다. IMAGE로 맵핑된 CMP 유형을 설정하십시오.
이 제한사항을 해결하려면, Rational® Application Developer 도구 세트에서 EJB 맵핑을 편집하고 다음 중 하나를 수행하십시오.
  • 직렬화된 CMP의 인스턴스가 255바이트보다 크지 않다고 확신하는 경우, CMP 유형을 IMAGE 또는 LONG VARBINARY에서 VARBINARY로 변경할 수 있습니다.
  • 작성기를 통해 CMP 유형을 다중 RDB 필드로 맵핑하십시오. 예를 들어, CMP 유형이 int 필드 및 문자열 필드가 있는 Java 오브젝트 X인 경우, 작성기를 사용하여 X를 두 RDB 필드 INTEGERVARCHAR로 맵핑하십시오. 작성기 사용에 대한 자세한 정보는 Rational Application Developer 문서를 참조하십시오.

CMP 1.1 Bean 실행 시 ClassCastException 예외 발생

Rational Application Developer 또는 WebSphere® Studio Application Developer Integration Edition 버전 4.0.x를 사용하여 EJB(Enterprise JavaBeans) 애플리케이션을 작성하고, 애플리케이션이 연관(관계)을 포함한 CMP(Container Managed Persistence) 1.1 Bean을 포함한 경우, WebSphere Application Server에서 애플리케이션을 실행하면 java.lang.ClassCastException 예외를 수신할 수 있습니다.
제거된 기능 제거된 기능: WebSphere Studio Application Developer Integration Edition 버전 5.0 이전으로 모델링된 비즈니스 프로세스는 더 이상 사용되지 않습니다.depfeat

Rational Application Developer 또는 WebSphere Studio Application Developer Integration Edition, 버전 4.0.x에서 생성된 캐스트 조작은 javax.rmi.PortableRemoteObject.narrow(...) 오브젝트를 사용하여 원격 오브젝트를 XToYLink.java(또는 YToXLink.java) 클래스의 CMP Bean의 원격 인터페이스로 변환되지 않으며, 여기서 X 및 Y는 CMP 1.1 Bean입니다.

권장되는 응답:

  1. 예를 들어, XToYLink.java 및 YToXLink.java와 같이 모든 링크 클래스에서 다음 메소드를 찾으십시오. 여기서 X와 Y는 CMP 1.1 Bean입니다.
    public void secondaryAddElementCounterLinkOf(javax.ejb.EJBObject anEJB)
    public void secondaryRemoveElementCounterLinkOf(javax.ejb.EJBObject anEJB) 
    public void secondarySetCounterLinkOf(javax.ejb.EJBObject anEJB)
  2. javax.rmi.PortableRemoteObject.narrow(...) 오브젝트를 추가하여 원격 오브젝트를 CMP Bean의 원격 인터페이스로 변환합니다.
예를 들어 다음 원래 메소드를 변경하십시오.
public void secondaryAddElementCounterLinkOf(javax.ejb.EJBObject anEJB) throws java.rmi.RemoteException {
        if (anEJB != null) 
               ((X) anEJB).secondaryAddY((Y) getEntityContext().getEJBObject()); 
다음으로 변경합니다.
public void secondaryAddElementCounterLinkOf(javax.ejb.EJBObject anEJB) throws java.rmi.RemoteException {
        if (anEJB != null)
             ((X) anEJB).secondaryAddY((Y)
javax.rmi.PortableRemoteObject.narrow(getEntityContext().getEJBObject(), Y.class)); 

주제 유형을 표시하는 아이콘 참조 주제



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