Udostępnij za pośrednictwem


Programowanie ADSI za pomocą języka Java/COM

Korzystając z maszyny wirtualnej Microsoft dla języka Java (Microsoft VM) i kompilatora języka Java firmy Microsoft, masz dostęp do wszystkich funkcji ADSI udostępnianych za pośrednictwem dowolnych składników COM ADSI z poziomu aplikacji Java/COM. Poniższy przykład kodu Java przedstawia elementy niezbędne do powiązania z obiektem ADSI i wywołania metod na tym obiekcie. Wymagane funkcje interfejsu API ADSI i metody obiektów są udostępniane za pośrednictwem 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);
}

Argument w pierwszej instrukcji import odnosi się do klas wrapera języka Java opakowanych w Activeds.dll. Użyj programu Visual J++, aby utworzyć klasy opakowujące i uwzględnić je w projekcie, postępując zgodnie z poniższą procedurą.

Aby utworzyć klasy opakowujące i uwzględnić je w projekcie

  1. W projekcie Visual J++ wybierz pozycję Dodaj opakowanie COM... z menu Projekt.
  2. Wybierz "Bibliotekę typów Active DS" z Zainstalowane składniki: w oknie dialogowym Owijek COM. Jeśli biblioteka typów nie jest wyświetlana w polu listy, kliknij przycisk Przeglądaj..., przejdź do katalogu, w którym jest przechowywany plik Activeds.tlb, a następnie wybierz bibliotekę typów.

Program Visual J++ tworzy pakiet activeds dla klas Otoki Języka Java i dołącza pakiet do domyślnej ścieżki projektu. Aby uzyskać więcej informacji, zobacz pakiet activeds w okienku Project Explore w oknie Visual J++.

Aby uzyskać obiekt ADSI, którego nie można współtworzyć, użyj jednej z udostępnionych funkcji interfejsu API ADSI, na przykład ADsGetObject lub ADsOpenObject, które są również zawarte w Activeds.dll. Firma Microsoft J/Direct zapewnia dostęp do tych i innych natywnych interfejsów API. Jest to zilustrowane przez dwa ostatnie wiersze przykładu kodu powyżej.

Podczas kompilowania upewnij się, że rozszerzenie języka firmy Microsoft jest włączone. W tym celu wybierz <projekt> Właściwości... z menu Projekt w oknie projektu Visual J++. Następnie kliknij kartę Compile w oknie dialogowym Właściwości projektu <>. Wyczyść pole wyboru Wyłącz rozszerzenia językowe firmy Microsoft . Jeśli kompilujesz z wiersza polecenia, użyj przełącznika "/x-", na przykład:

jvc /x- SimpleADSI.java

Na koniec, aby maszyna wirtualna załadowała składnik COM, biblioteka dynamicznego łącza (DLL) musi być widoczna na ścieżce systemowej. Jeśli zostanie zwrócony błąd "java.lang.UnsatisfiedLinkError", ustaw zmienną środowiskową PATH tak, aby uwzględniała lokalizację, która zawiera wymaganą bibliotekę DLL. Jeśli na przykład Activeds.dll został zainstalowany w folderze c:\adsi\lib, wydaj następujące polecenie z wiersza polecenia:

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