Programando ADSI com Java/COM
Usando a máquina virtual da Microsoft para Java (Microsoft VM) e o Microsoft Java Compiler, você tem acesso a todos os recursos ADSI expostos por meio de qualquer componente ADSI COM, a partir de um aplicativo Java/COM. O exemplo de código Java a seguir mostra os elementos necessários para vincular a um objeto ADSI e invocar métodos nesse objeto. As funções de API ADSI necessárias e os métodos de objeto são expostos por meio de 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);
}
O argumento na primeira instrução import refere-se às classes Java Wrapper empacotadas no Activeds.dll. Use o Visual J ++ para criar as classes wrapper e incluí-las em seu projeto, seguindo o procedimento abaixo.
Para criar classes wrapper e incluí-las em seu projeto
- Em um projeto Visual J ++, selecione Adicionar com wrapper... no menu Project .
- Selecione "Active DS Type Library" na caixa de diálogo Installed Components (Active DS Type Library) na caixa de diálogo COM Wrappers. Se a biblioteca de tipos não for mostrada na caixa de listagem, clique no botão Procurar... , navegue até o diretório onde Activeds.tlb está armazenado e selecione a biblioteca de tipos.
Visual J++ cria o pacote activeds para as classes Java Wrapper e incluir o pacote no caminho padrão do projeto. Para obter mais informações, consulte o pacote activeds no painel Explorar do projeto na janela do Visual J++.
Para obter um objeto ADSI que não pode ser cocriado, use uma das funções de API ADSI expostas, por exemplo, ADsGetObject ou ADsOpenObject, que também são empacotadas no Activeds.dll. O Microsoft J/Direct fornece acesso a essas e outras APIs nativas. Isso é ilustrado pelas duas últimas linhas do exemplo de código, acima.
Ao compilar, verifique se a Extensão de Idioma da Microsoft está habilitada. Para fazer isso, selecione <Propriedades do projeto... no menu Projeto na janela do projeto> Visual J++. Em seguida, clique na guia Compilar na caixa de diálogo Propriedades do <projeto>. Desmarque a caixa de seleção Desabilitar extensões de idioma da Microsoft. Se estiver compilando a partir da linha de comando, use a opção "/x-", por exemplo:
jvc /x- SimpleADSI.java
Finalmente, para que a máquina virtual carregue o componente COM, a biblioteca de vínculo dinâmico (DLL) deve estar visível no caminho do sistema. Se um erro "java.lang.UnsatisfiedLinkError" for retornado, defina o PATH para incluir o caminho que contém a DLL necessária. Por exemplo, se Activeds.dll tiver sido instalado em c:\adsi\lib, emita o seguinte comando na linha de comando:
definir PATH = %PATH%; c:\adsi\lib