close

JNDI

Ir para a navegação Ir para a pesquisa

A Java Naming and Directory Interface é uma Java Application Programming Interface (API) para serviços de diretório . Permite que os clientes descubram e pesquisem objetos e dados por nome. Como todas as APIs Java que fazem interface com sistemas host, ela é independente da implementação subjacente. Além disso, ele especifica uma interface de provedor de serviços (SPI) que permite que implementações de serviços de diretório sejam integradas à estrutura. As implementações podem usar um servidor, um arquivo ou um banco de dados; a escolha é do desenvolvedor.

Introdução

A API JNDI é usada pelas APIs Java RMI e Java EE para pesquisar objetos em uma rede. Jini tem seu próprio serviço de pesquisa e não usa a API JNDI.

A API fornece:

  • um mecanismo para vincular um objeto a um nome;
  • uma interface de pesquisa de diretório que permite consultas gerais;
  • uma interface de eventos que permite aos clientes determinar quando as entradas do diretório foram modificadas;
  • Extensões LDAP para suportar os recursos adicionais de um serviço LDAP.

A parte SPI permite suporte para praticamente qualquer tipo de diretório ou serviço de nomenclatura, incluindo:

A especificação JNDI foi lançada pela Sun Microsystems em 10 de março de 1997 . [1] . A partir de 2006, a versão atual é JNDI 1.2.

Pesquisa básica

A JNDI organiza seus nomes em uma hierarquia. Um nome pode ser qualquer string como "com.mydomain.ejb.MyBean". Um nome também pode ser um objeto que suporta a interface Name, porém a maneira mais comum de nomear um objeto é uma string. Um nome é associado a um objeto no diretório armazenando o objeto ou uma referência JNDI ao objeto no serviço de diretório identificado pelo nome.

A API JNDI define um contexto que especifica onde procurar um objeto. O contexto inicial é normalmente usado como ponto de partida.

No caso mais simples, um contexto inicial deve ser criado usando a implementação específica e os parâmetros extras exigidos pela implementação. O contexto inicial será usado para procurar um nome. O contexto inicial é análogo à raiz de uma árvore de diretórios para um sistema de arquivos. Abaixo está um exemplo de como criar um contexto inicial:

  Argumentos da tabela de  hash =  new  tabela de hash (); 
 //primeiro você deve especificar a fábrica. 
 //É assim que você escolhe entre a implementação do jboss ou um dos Sun 
 args . put (  Contexto .INITIAL_CONTEXT_FACTORY , " com.jndiprovider.TheirContextFactory " ); //O próximo argumento é a URL que especifica onde está o armazenamento de dados: args . put ( Contexto . PROVIDER_URL , "http://jndiprovider-database" ); //Talvez seja necessário fornecer credenciais de segurança //em seguida é criar o contexto inicial Context myCurrentContext = new InitialContext ( args ); 
 
    
 
 
       

Um contexto é então usado para pré-buscar os nomes associados nesse contexto. Por exemplo:

  Referência de  objeto =  myCurrentContext . lookup (  "com.meudominio.MeuBean"  ); 
 //esta etapa é necessária com EJB. 
 MyBean  myBean  =  ( MyBean )  PortableRemoteObject . estreito (  referência ,  classe MyBean . ); 

Pesquisas

Os atributos podem ser anexados a entradas especiais chamadas diretórios. Os diretórios são necessários para permitir que os objetos sejam pesquisados ​​por seus atributos associados. Os diretórios são um tipo de contexto, eles restringem o espaço de nomes como uma estrutura de diretórios faz em um sistema de arquivos.

Links externos