Java/COM을 사용하여 ADSI 프로그래밍

Java용 Microsoft 가상 머신(Microsoft VM) 및 Microsoft Java 컴파일러를 사용하면 Java/COM 애플리케이션에서 ADSI COM 구성 요소를 통해 노출되는 모든 ADSI 기능에 액세스할 수 있습니다. 다음 Java 코드 예제에서는 ADSI 개체에 바인딩하고 해당 개체에서 메서드를 호출하는 데 필요한 요소를 보여 줍니다. 필요한 ADSI API 함수 및 개체 메서드는 Activeds.dll 통해 노출됩니다.

import activeds.*;       // ADSI COM Wrapper classes
import com.ms.com.*;     // to use _Guid data type in COM.

public Class SimpleADSI 
{
    IADs obj;
    String path = "WinNT://domain/machine,computer";
    _Guid riid = IADs.iid;
    public static void main(String args[]) 
    {
        try 
        {
            obj = (IADs)ADsGetObject(path, riid);
            System.out.println( "Object name:  " + obj.getName() );
            System.out.println( "      class:  " + obj.getSchema() );
            System.out.println( "    ADsPath:  " + obj.getADsPath() );
            System.out.println( "     parent:  " + obj.getParent() );
        }
        catch (Exception e) 
        {
            System.out.println( "SimpleADSI Error: " + e.toString() );
        }
    }

    /** @dll.import("activeds", ole) */
    private static native IUnknown ADsGetObject(String path, _Guid riid);
}

첫 번째 import 문의 인수는 Activeds.dll 패키지된 Java 래퍼 클래스를 나타냅니다. Visual J++를 사용하여 래퍼 클래스를 만들고 아래 절차에 따라 프로젝트에 포함합니다.

래퍼 클래스를 만들고 프로젝트에 포함하려면

  1. Visual J++ 프로젝트의 프로젝트 메뉴에서 Com 래퍼 추가...를 선택합니다.
  2. 설치된 구성 요소: COM 래퍼 대화 상자에서 "활성 DS 형식 라이브러리"를 선택합니다. 형식 라이브러리가 목록 상자에 표시되지 않으면 찾아보기... 단추를 클릭하고 Activeds.tlb가 저장된 디렉터리로 이동한 다음 형식 라이브러리를 선택합니다.

Visual J++는 Java 래퍼 클래스에 대한 activeds 패키지를 만들고 프로젝트의 기본 경로에 패키지를 포함합니다. 자세한 내용은 Visual J++ 창의 프로젝트 탐색 창에서 activeds 패키지를 참조하세요.

공동 생성할 수 없는 ADSI 개체를 얻으려면 노출된 ADSI API 함수(예: ADsGetObject 또는 ADsOpenObject) 중 하나를 사용하여 Activeds.dll 패키지합니다. Microsoft J/Direct는 이러한 API 및 기타 네이티브 API에 대한 액세스를 제공합니다. 위의 코드 예제의 마지막 두 줄에 설명되어 있습니다.

컴파일할 때 Microsoft 언어 확장이 사용하도록 설정되어 있는지 확인합니다. 이렇게 하려면 Visual J++ 프로젝트 > 창의 프로젝트 메뉴에서 프로젝트 속성...을 선택합니다<. 그런 다음 프로젝트> 속성 대화 상자에서 컴파일 탭을< 클릭합니다. Microsoft 언어 확장 사용 안 함 검사 상자를 선택 취소합니다. 명령줄에서 컴파일하는 경우 "/x-" 스위치를 사용합니다. 예를 들면 다음과 같습니다.

jvc /x- SimpleADSI.java

마지막으로 가상 머신이 COM 구성 요소를 로드하려면 시스템 경로에 DLL(동적 연결 라이브러리)을 표시해야 합니다. "java.lang.UnsatisfiedLinkError" 오류가 반환되면 PATH를 설정하여 필요한 DLL이 포함된 경로를 포함합니다. 예를 들어 c:\adsi\lib에 Activeds.dll 설치된 경우 명령줄에서 다음 명령을 실행합니다.

SET PATH = %PATH%; c:\adsi\lib