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 in pacchetto 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++ selezionare Aggiungi wrapper Com dal menu Progetto .
  2. Selezionare "Active DS Type Library" nella finestra di dialogo 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 progetti 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, incluse anche 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 <Proprietà progetto> dal menu Progetto nella finestra del progetto Visual J++. Fare quindi clic sulla scheda Compila nella <finestra di dialogo Proprietà progetto>. Deselezionare la casella di controllo Disabilita estensioni del linguaggio Microsoft. Se la compilazione dalla riga di comando usa 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 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