[AIX Solaris HP-UX Linux Windows]

SDO HelperContext 오브젝트 작성 및 액세스(더 이상 사용되지 않음)

SCA(Service Component Architecture) 구현은 SDO(Service Data Objects) 2.1.1(JSR 235)을 준수하며 몇 가지 구현별 확장을 제공합니다. 이러한 확장은 현재 개발 중인 OASIS SDO 3.0 스펙의 최근 방향을 따릅니다. 확장 중 하나에는 SDO 클래스 및 HelperContextFactory 인터페이스에 있는 HelperContext 오브젝트를 작성하고 관리하는 데 사용되는 API를 도입했습니다.

이 태스크 정보

이 주제에서는 비SCA 애플리케이션에서 SDO HelperContext를 작성하고 액세스하는 방법에 대해 설명합니다.

SDO 2.1.1을 포함하여 3.0 이전의 SDO 버전에서는 HelperContext 오브젝트를 작성하는 표준 방법이 없습니다. SDO 헬퍼 클래스는 기본 HelperContext에서 액세스할 수 있으며 일반적으로 해당 INSTANCE 필드(예: TypeHelper.INSTANCE)를 사용하여 액세스됩니다. SDO 2.1.1에서는 INSTANCE 필드를 사용하지 않는 것이 좋으며 SDO 3.0에서는 이 필드가 사용되지 않을 가능성이 높습니다. INSTANCE 필드를 사용하는 대신, 해당 접근자 메서드를 사용하여 도우미에 액세스하도록 애플리케이션을 코딩하세요. HelperContext 예를 들어 인터페이스 helperContext.getTypeHelper(). SDO에서는 2.1.1, 유일한 HelperContext 표준 API를 통해 사용할 수 있는 기본 도우미 컨텍스트는 다음과 같습니다. HelperProvider.getDefaultContext().

제안된 SDO 3.0 범위 솔루션(제품에서 사용 가능)은 보다 유연하며 이 주제에서 설명합니다.

HelperContext는 SDO의 메타데이터 범위를 나타냅니다. 제품에서 사용 가능한 SDO 3.0에서는 HelperContext가 HelperContextFactory를 사용하여 작성됩니다. HelperContextFactory 인터페이스는 다음과 같습니다.

public interface HelperContextFactory {

  /**
  * Create a new HelperContext in this implementation.  Once created the HelperContext
  * can be looked up as follows (Note if the identifier is null or "" it is not registered):
  * SDO.getHelperContext(identifier);
  * @param identifier - A unique identifier that can be used to access the HelperContext.
  * @param properties - Properties required to initialize the HelperContext.
  * @return a HelperContext object
  * @throws IllegalArgumentException If a different HelperContext is already
  * registered with the specified identifier.
  */
  public HelperContext createHelperContext(String identifier, Map<String, Object> properties)
       throws IllegalArgumentException;      
    /**      
    * Create a new HelperContext in this implementation.  Once created the HelperContext
    * can be looked up as follows (Note if the identifier is null or "" it is not registered):
    * SDO.getHelperContext(identifier);
    * @param identifier - A unique identifier that can be used to access the HelperContext.
    * @param classLoader - The class loader for the generated static classes (if any).
    * @param properties - Properties required to initialize the HelperContext.
    * @return a HelperContext object
    * @throws IllegalArgumentException If a different HelperContext is already
    * registered with the specified identifier.
    */     
  public HelperContext createHelperContext(String identifier, ClassLoader classLoader, 
       Map<String, Object> properties) throws IllegalArgumentException;
} 

SDO 환경에서 사용 가능한 HelperContextFactory가 두 개 이상일 수 있으나 기본값은 하나입니다. 기본 HelperContextFactory에는 commonj.sdo.helper.SDO 인터페이스를 통해 액세스할 수 있습니다.

프로시저

  1. 기본 팩토리를 사용하여 코드에 HelperContext 오브젝트를 작성하십시오.

    다음 예에서는 기본 팩토리를 사용하여 HelperContext hc를 작성합니다.

    HelperContext hc = 
    SDO.getHelperContextFactory().createHelperContext("ScopeManagerTestID", options);	
    

    식별자 문자열,"ScopeManagerTestID" 은 JVM(Java™ Virtual Machine) 내에서 고유해야 합니다. 실제 값이 중요하지 않은 경우 다음과 같이 Java UUID 클래스를 사용하여 확실하게 고유한 ID를 생성하십시오.

    hc = SDO.getHelperContextFactory().createHelperContext(
        UUID.randomUUID().toString(), options);
  2. 코드의 HelperContext 오브젝트에 액세스하십시오.

    SDO 런타임은 HelperContext 오브젝트를 관리합니다. SDO.getHelperContext(ID) 메소드를 사용하여 기존 HelperContext 오브젝트에 액세스하십시오.

    hc = SDO.getHelperContext("ScopeManagerTestID");

    HelperContext의 ID는 getIdentifier() 메소드를 사용하여 액세스할 수 있습니다.

    String id = hc.getIdentifier();

결과

HelperContext 오브젝트가 정의되고 액세스 가능하게 됩니다.

다음에 수행할 내용

SCA 애플리케이션에서 SDO를 사용하십시오. SCA 애플리케이션에서 SDO를 사용하면 SCA 런타임에서 일반적으로 HelperContext 오브젝트 및 ID를 작성합니다. SCA 애플리케이션에서 SDO 2.1.1 사용에 대한 주제를 참조하십시오.

SCA 애플리케이션에서 SDO를 사용하는 경우 SCA 런타임에서 HelperContext 오브젝트 및 ID를 관리하므로 SCA 애플리케이션에서 SDO HelperContext를 작성 및 액세스하는 데 사용되는 메소드는 비SCA 애플리케이션에서 사용되는 메소드와 다릅니다. SCA 애플리케이션은 다음과 같이 DefaultHelperContext 어노테이션을 사용하여 SDO HelperContext에 액세스할 수 있습니다. 예를 들어, 다음과 같습니다.

import com.ibm.websphere.soa.sca.sdo.DefaultHelperContext;

@DefaultHelperContext
public HelperContext defaultHelperContext;