Programmation d’ADSI avec Java/COM

À l’aide de la machine virtuelle Microsoft pour Java (machine virtuelle Microsoft) et du compilateur Microsoft Java, vous avez accès à toutes les fonctionnalités ADSI exposées via tous les composants COM ADSI, à partir d’une application Java/COM. L’exemple de code Java suivant montre les éléments nécessaires pour établir une liaison à un objet ADSI et appeler des méthodes sur cet objet. Les fonctions et méthodes d’objet de l’API ADSI requises sont exposées via 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’argument de la première instruction import fait référence aux classes Wrapper Java empaquetées dans Activeds.dll. Utilisez Visual J++ pour créer les classes wrapper et les inclure dans votre projet, en suivant la procédure ci-dessous.

Pour créer des classes wrapper et les inclure dans votre projet

  1. Dans un projet Visual J++, sélectionnez Ajouter com Wrapper... dans le menu Projet .
  2. Sélectionnez « Bibliothèque de types Active DS » dans la boîte de dialogue Composants installés : dans la boîte de dialogue Wrappers COM. Si la bibliothèque de types n’apparaît pas dans la zone de liste, cliquez sur le bouton Parcourir... , accédez au répertoire où Activeds.tlb est stocké, puis sélectionnez la bibliothèque de types.

Visual J++ crée le package activeds pour les classes Wrapper Java et inclut le package dans le chemin d’accès par défaut du projet. Pour plus d’informations, consultez le package activeds dans le volet Explorateur de projets de la fenêtre Visual J++.

Pour obtenir un objet ADSI qui ne peut pas être cocréé, utilisez l’une des fonctions d’API ADSI exposées, par exemple ADsGetObject ou ADsOpenObject, qui sont également empaquetées dans Activeds.dll. Microsoft J/Direct fournit l’accès à ces API et à d’autres API natives. Cela est illustré par les deux dernières lignes de l’exemple de code ci-dessus.

Lors de la compilation, assurez-vous que l’extension de langage Microsoft est activée. Pour ce faire, sélectionnez <Propriétés du projet> ... dans le menu Projet de la fenêtre de projet Visual J++. Cliquez ensuite sur l’onglet Compiler dans la boîte de dialogue Propriétés du <projet>. Désactivez la zone Désactiver les extensions de langage Microsoft case activée. Si vous compilez à partir de la ligne de commande, utilisez le commutateur « /x- », par exemple :

jvc /x- SimpleADSI.java

Enfin, pour que la machine virtuelle charge le composant COM, la bibliothèque de liens dynamiques (DLL) doit être visible sur le chemin d’accès système. Si une erreur « java.lang.UnsatisfiedLinkError » est retournée, définissez le CHEMIN d’accès de manière à inclure le chemin qui contient la DLL requise. Par exemple, si Activeds.dll a été installé dans c:\adsi\lib, exécutez la commande suivante à partir de la ligne de commande :

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