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
- In un progetto Visual J++ selezionare Aggiungi wrapper Com dal menu Progetto .
- 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