Programmieren von ADSI mit Java/COM

Mithilfe des virtuellen Microsoft-Computers für Java (Microsoft-VM) und des Microsoft Java-Compilers haben Sie Zugriff auf alle ADSI-Features, die über alle ADSI COM-Komponenten aus einer Java/COM-Anwendung verfügbar gemacht werden. Das folgende Java-Codebeispiel zeigt die Elemente, die zum Binden an ein ADSI-Objekt und zum Aufrufen von Methoden für dieses Objekt erforderlich sind. Die erforderlichen ADSI-API-Funktionen und -Objektmethoden werden über Activeds.dll verfügbar gemacht.

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);
}

Das Argument in der ersten import-Anweisung bezieht sich auf Java Wrapper-Klassen, die in Activeds.dll verpackt sind. Verwenden Sie Visual J++, um die Wrapperklassen zu erstellen und in Ihr Projekt einzuschließen, wie unten beschrieben.

So erstellen Sie Wrapperklassen und fügen sie in Ihr Projekt ein

  1. Wählen Sie in einem Visual J++-Projekt im Menü Projekt die Option Com Wrapper hinzufügen... aus.
  2. Wählen Sie im Dialogfeld COM-Wrapper " Installierte Komponenten " die Option "Active DS Type Library" aus. Wenn die Typbibliothek nicht im Listenfeld angezeigt wird, klicken Sie auf die Schaltfläche Durchsuchen... , navigieren Sie zu dem Verzeichnis, in dem Activeds.tlb gespeichert ist, und wählen Sie dann die Typbibliothek aus.

Visual J++ erstellt das activeds-Paket für die Java Wrapper-Klassen und schließt das Paket in den Standardpfad des Projekts ein. Weitere Informationen finden Sie im Activeds-Paket im Bereich Projektsuche im Visual J++-Fenster.

Um ein ADSI-Objekt abzurufen, das nicht kocreiert werden kann, verwenden Sie eine der verfügbar gemachten ADSI-API-Funktionen, z. B. ADsGetObject oder ADsOpenObject, die ebenfalls in Activeds.dll gepackt sind. Microsoft J/Direct bietet Zugriff auf diese und andere native APIs. Dies wird durch die letzten beiden Zeilen des Codebeispiels oben veranschaulicht.

Stellen Sie beim Kompilieren sicher, dass die Microsoft-Spracherweiterung aktiviert ist. Wählen Sie hierzu im Visual J++-Projektfenster im Menü Projekt die Option <Projekteigenschaften>... aus. Klicken Sie dann im Dialogfeld Eigenschaften des Projekts> auf die< Registerkarte Kompilieren. Deaktivieren Sie das Kontrollkästchen Microsoft-Spracherweiterungen deaktivieren . Verwenden Sie beim Kompilieren über die Befehlszeile den Schalter "/x-", z. B.:

jvc /x - SimpleADSI.java

Damit der virtuelle Computer die COM-Komponente laden kann, muss die DLL (Dynamic Link Library) im Systempfad sichtbar sein. Wenn ein Fehler "java.lang.UnsatisfiedLinkError" zurückgegeben wird, legen Sie path so fest, dass er den Pfad enthält, der die erforderliche DLL enthält. Wenn beispielsweise Activeds.dll in c:\adsi\lib installiert wurde, geben Sie den folgenden Befehl über die Befehlszeile aus:

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