Condividi tramite


Programmazione di ADSI con Java/COM

Usando la macchina virtuale Microsoft per Java (Microsoft VM) e il compilatore Microsoft Java, è possibile accedere a tutte le funzionalità ADSI esposte tramite qualsiasi componente COM ADSI, da un'applicazione Java/COM. L'esempio di codice Java seguente illustra gli elementi necessari per eseguire l'associazione a un oggetto ADSI e richiamare metodi su tale oggetto. Le funzioni API ADSI necessarie e i metodi oggetto vengono esposti tramite 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);
}

L'argomento nella prima istruzione import fa riferimento alle classi Wrapper Java impacchettate in Activeds.dll. Usare Visual J++ per creare le classi wrapper e includerle nel progetto, seguendo la procedura seguente.

Per creare classi wrapper e includerle nel progetto

  1. In un progetto Visual J++, è necessario selezionare Aggiungi wrapper COM... dal menu Progetto.
  2. Selezionare "Active DS Type Library" nella Componenti installati: dalla finestra di dialogo Com Wrapper. Se la libreria dei tipi non viene visualizzata nella casella di riepilogo, fare clic sul pulsante Sfoglia, passare alla directory in cui è archiviato Activeds.tlb e quindi selezionare la libreria dei tipi.

Visual J++ crea il pacchetto activeds per le classi Wrapper Java e include il pacchetto nel percorso predefinito del progetto. Per altre informazioni, vedere il pacchetto activeds nel riquadro Esplora Progetto nella finestra di Visual J++.

Per ottenere un oggetto ADSI che non può essere cocreato, usare una delle funzioni API ADSI esposte, ad esempio ADsGetObject o ADsOpenObject, anch'essi inclusi nel pacchetto in Activeds.dll. Microsoft J/Direct fornisce l'accesso a queste e ad altre API native. Questo è illustrato dalle ultime due righe dell'esempio di codice precedente.

Durante la compilazione, assicurarsi che l'estensione del linguaggio Microsoft sia abilitata. A tale scopo, selezionare <progetto> Proprietà... dal menu Progetto nella finestra del progetto Visual J++. Fare quindi clic sulla scheda Compilazione nella finestra di dialogo Proprietà del progetto<>. Deseleziona la casella di controllo Disabilita estensioni del linguaggio Microsoft. Se si compila dalla riga di comando, usare l'opzione "/x-", ad esempio:

jvc /x- SimpleADSI.java

Infine, affinché la macchina virtuale carichi il componente COM, la libreria a collegamento dinamico (DLL) deve essere visibile nel percorso di sistema. Se viene restituito un errore «java.lang.UnsatisfiedLinkError», impostare il PATH per includere il percorso contenente la DLL richiesta. Ad esempio, se Activeds.dll è stato installato in c:\adsi\lib, eseguire il comando seguente dalla riga di comando:

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