Программирование 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++, чтобы создать классы-оболочки и включить их в проект, выполнив приведенную ниже процедуру.
Создание классов-оболочки и их включение в проект
- В проекте Visual J++ выберите " Добавить com-оболочку"... в меню "Проект ".
- Выберите "Библиотека типов 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