Поделиться через


Программирование ADSI с помощью Java/COM

С помощью виртуальной машины Майкрософт для Java (microsoft VM) и компилятора Microsoft Java у вас есть доступ ко всем функциям ADSI, предоставляемым через все компоненты COM ADSI, из приложения Java/COM. В следующем примере кода Java показаны элементы, необходимые для привязки к объекту ADSI и вызова методов для этого объекта. Необходимые функции API ADSI и методы объектов предоставляются через 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);
}

Аргумент в первой инструкции импорта относится к классам оболочки Java, упакованным в Activeds.dll. Используйте Visual J++, чтобы создать классы-оболочки и включить их в проект, выполнив приведенную ниже процедуру.

Создание классов-оболочки и их включение в проект

  1. В проекте Visual J++ выберите " Добавить com-оболочку"... в меню "Проект ".
  2. Выберите "Библиотека типов Active DS" из установленных компонентов: в диалоговом окне "Оболочки COM". Если библиотека типов не отображается в списке, нажмите кнопку "Обзор... ", перейдите в каталог, где хранится Activeds.tlb, а затем выберите библиотеку типов.

Visual J++ создает пакет activeds для классов оболочки Java и включает пакет в путь по умолчанию проекта. Дополнительные сведения см. в разделе "Активные" в области "Обзор проекта" в окне Visual J++.

Чтобы получить объект ADSI, который нельзя создать, используйте одну из предоставляемых функций API ADSI, например ADsGetObject или ADsOpenObject, которые также упаковываются в Activeds.dll. Microsoft J/Direct предоставляет доступ к этим и другим собственным API. Это иллюстрируется последними двумя строками приведенного выше примера кода.

При компиляции убедитесь, что расширение языка Майкрософт включено. Для этого выберите <свойства проекта... в меню "Проект>" в окне проекта Visual J++. Затем щелкните вкладку "Компиляция" в <диалоговом окне "Свойства проекта>". Снимите флажок "Отключить расширения языка Майкрософт" проверка. При компиляции из командной строки используйте параметр "/x-", например:

jvc /x- SimpleADSI.java

Наконец, чтобы виртуальная машина загружала COM-компонент, библиотека динамической компоновки (DLL) должна быть видна на системном пути. Если возвращается ошибка java.lang.UnsatisfiedLinkError, задайте ПУТЬ, чтобы включить путь, содержащий необходимую библиотеку DLL. Например, если Activeds.dll установлен в c:\adsi\lib, выполните следующую команду из командной строки:

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