J523: Tutorial JNDI Java Naming and Directory Interface
|
|
|
- Artur Castilho Leal
- 9 Há anos
- Visualizações:
Transcrição
1 J523: Tutorial JNDI Java Naming and Directory Interface Helder da Rocha 1
2 Objetivos Este seminário tem como objetivo abordar os conceitos fundamentais relativos a sistemas de nomes e diretórios em geral e mostrar como usar o JNDI para usar tais sistemas Abrange aspectos essenciais da API para manipulação de nomes, contextos e atributos (não entra em detalhes sobre LDAP, SPI, federações, etc.) Finalidade principal: preencher um pré-requisito essencial para o desenvolvimento de aplicações J2EE. O roteiro deste capítulo é baseado nas duas primeiras trilhas do JNDI Tutorial da Sun (por Rossana Lee) Veja onde encontrar esta e outras fontes no final desta apresentação. Os exemplos e exercícios (opcionais) sobre diretórios requerem o acesso a um servidor LDAP (com permissão de leitura) e DNS 2
3 Sumário Introdução ao JNDI Conceitos básicos sobre nomes e diretórios Classes e pacotes da API JNDI Operações com nomes Contexto inicial Localização (lookup) de objetos Contextos Ligações (bindings) Operações com diretórios Atributos Pesquisas Registro de objetos 3
4 Conceitos fundamentais Conceitos relativos a sistema de nomes Serviço de nomes Convenções de nomenclatura Ligação (binding) Referências e endereços Contextos e subcontextos Sistema de nomes e espaço de nomes Conceitos relativos a sistemas de diretórios Diretórios e serviços de diretórios Sistemas de diretórios Atributos Pesquisas e filtros LDAP 4
5 Serviço de nomes A principal função de um serviço de nomes é permitir a associação de um nome (ou uma outra representação alternativa mais simples) a recursos computacionais como endereços de memória, de rede, de serviços objetos e referências códigos em geral Suas duas funções básicas são Associar (mapear) um nome a um recurso Localizar um recurso a partir de seu nome Exemplos Sistema de arquivos: liga caminho a bloco(s) de memória: c:\temp\dados.txt 16A0:0C00 Sistema DNS: liga nome de domínio a endereço IP:
6 Ligação ou mapeamento (Binding) É a associação de um nome com um objeto (ou com um localizador do objeto) Exemplos: Nome de arquivo no DOS está ligado a um bloco de memória Nome de arquivo no Mac está ligado a um ou dois blocos de memória (resource e data fork) Nome de máquina na internet está ligado a endereço IP Nome de objeto em ORB está ligado a uma instância remota do objeto umnome ligado a Objeto 6
7 Ponteiros e referências Muitas vezes, o sistema de nomes não armazena o recurso identificado pelo nome mas guarda apenas uma referência (ou ponteiro) para ele A referência pode conter apenas a informação necessária para buscar o objeto Informações ou até referências adicionais podem ser obtidas em consultas posteriores usando essa referência umnome ligado a #ponteiro para Objeto 7
8 Convenções de nomenclatura Todo sistema de nomes obedece a uma determinada convenção que determina sua sintaxe Estruturas similares com convenções diferentes: incompatibilidade! Exemplos Convenção para nomes de arquivos no Unix requer que os componentes do nome sejam ordenados da esquerda para a direita relativos à raiz do sistema (/) separados pelo caractere "/": /usr/bin/arquivo.txt Convenção para nome de domínio estabelece que componentes do nome sejam ordenados relativos à raiz do domínio (.com,.net,.br) da direita para a esquerda e separados pelo caractere ponto: maq.subdom.dom.com.br Convenção para nome de recurso LDAP requer que os pares nomevalor sejam ordenados da direita para a esquerda e separados por vírgula: tel= , area=11, pais=55 8
9 Nomes atômicos, compostos e federações Nome atômico é o componente indivisível de um nome arquivo.txt em c:\textos\arquivo.txt usr em /usr/local/bin/java o=argo Navis em cn=helder da Rocha, o=argo Navis, c=br org em jakarta.apache.org Nome composto (Compound Name) é a combinação de zero ou mais nomes atômicos de acordo com uma certa convenção Os nomes à direita, na lista acima, são nomes compostos Tem múltiplas ligações; uma para cada nome atômico Federação (Federation ou Composite Name) é um nome que mistura nomes de espaços de nome diferentes. Exemplo: Espaço de nomes URL Scheme ID: (define o protocolo) Espaço de nomes DNS: java.sun.com Espaço de nomes do sistema de arquivos: /products/j2ee/index.html 9
10 Contextos e subcontextos Um contexto é um conjunto de ligações nome-objeto Em outras palavras, é um objeto que tem zero ou mais ligações Se o objeto (referência) contido no contexto for também um contexto ele é um subcontexto O escopo do subcontexto é limitado pelo seu contexto pai A resolução de um nome (obtenção do objeto associado) ocorre em um escopo limitado pelo seu contexto Cada contexto possui uma operação de resolução associada Exemplos de contextos e subcontextos: /usr/bin/java/ usr éo contexto; bin ésubcontexto deusr,... br éo contexto, com ésubcontexto debr,... 10
11 Sistema e espaço de nomes Um sistema de nomes é um conjunto interligado de contextos que respeitam a mesma convenção e possuem um conjunto comum de operações O sistema de nomes oferece um serviço de nomes através de suas operações Exemplo: sistema de arquivos. Oferece sistema que mapeia nomes de arquivo a diretórios e arquivos O espaço de nomes consiste de todo o conjunto de nomes disponíveis em um sistema de nomes Exemplo: espaço de nomes do sistema de arquivos corresponde a todos os nomes de arquivo e diretório de um sistema O espaço de nomes de uma federação é chamado de espaço de nomes composto 11
12 Diretórios e serviços de diretório Diretório: conjunto interligado de objetos Organização não precisa ser hierárquica (contextual) Para cada item há um nome unívoco (chave) Cada item possui um ou mais atributos Um serviço de diretório é oferece operações para criar, remover, modificar e principalmente pesquisar atributos associados a objetos em um diretório Diretório = tipo de banco de dados acessível via rede Projetado para ser mais eficientes na recuperação de dados que na gravação ou alteração Atualizações são simples, sem transações e envolvendo pequena quantidade de dados Exemplos NIS (Network Information System) X serviço antigo baseado em OSI, precursor do LDAP 12
13 Sistemas de nomes e diretório Sistemas de nomes são frequentemente estendidos com sistemas de diretório Associa nomes com objetos (como um serviço de nomes) Permite que objetos tenham atributos (qualificadores) Pode-se Procurar o objeto pelo nome (serviço de nomes) Procurar o objeto pelos seus atributos Obter os atributos de um objeto Objetos de diretório representam objetos em um sistema de diretórios assim como nomes representam objetos em um sistema de nomes Além de representar um objeto, objetos de diretório possuem atributos que descrevem o objeto associado. 13
14 Atributos Descrevem objeto associado a um objeto de diretório Um atributo possui Um identificador de atributo: permite que o atributo seja localizado e utilizado Conjunto de valores de atributo: as informações (dados) que estão associadas com o atributo Um tipo: restringe os dados que um atributo pode receber Atributos fazem parte do contexto do objeto Vários serviços também suportam pesquisas com base no conteúdo dos objetos (seus atributos) Busca é formada por uma expressão envolvendo os atributos dentro de um determinado contexto Expressão pode resultar em mais de um objeto 14
15 LDAP Lightweight Directory Access Protocol Protocolo leve para acesso a diretórios (padrão aberto) Armazena objetos em uma árvore (DIT - directory information tree) Define vários atributos, tipos e sintaxes padrão baseados no X.500 Extensível (pode-se criar novos tipos, atributos, etc.) Entradas no diretório são formadas de atributos Um dos atributos é usado para identificar o objeto em um contexto: RDN - Relative Distinguished Name - unívoco no contexto Uma seqüência ordenada de RDNs identifica o objeto globalmente: DN - Distinguished Name - chave unívoca global! Cada atributo tem um tipo e um valor Cada objeto tem um tipo (definido por uma ou mais classes) Diretórios baseados em LDAP suportam qualquer tipo de dados várias formas de segurança (criptografia, autenticação, integridade) 15
16 Uma entrada em um diretório LDAP dn: cn=niels Bohr,ou=People,o=JNDITutorial,dc=argonavis,dc=com,dc=br cn: Niels Bohr sn: Bohr mail: telephonenumber: objectclass: top objectclass: person objectclass: organizationalperson objectclass: inetorgperson bohr.ldif Cada contexto é identificado por um nome (par atributo=valor) Cada contexto tem atributos Obtenção de um contexto permite acesso a atributos subcontextos atributos dos subcontextos Atributos dc=br dc=com Atributos X-500 dc: Domain Component o: Organization ou: Organizational Unit cn: Common Name dc=argonavis DN: Distinguished Name (seqüência de RDNs) Atributos objectclass (informam as classes às quais pertencem esta entrada) Hierarquia de contextos o=jnditutorial ou=people RDNs (Relative Distinguished Names) cn=niels Bohr 16
17 JNDI Java Naming and Directory Interface éuma ponte sobre os diversos serviços de nomes e diretórios diferentes Vantagens Só é preciso aprender uma única API para acessar vários tipos de informação de serviços de diretório Isola a aplicação dos detalhes específicos do protocolo Pode ser usada para ler objetos Java (serializados) que estejam armazenados em um diretório Pode combinar diferentes tipos de diretório (federação) e tratá-los como um diretório único Componentes API - Application Programming Interface SPI - Service Provider Interface que permite que novos serviços sejam plugados transparentemente 17
18 Arquitetura JNDI Aplicação Java JNDI API Naming Manager Pacote javax.naming JNDI Service Provider Interface (SPI) NDS SP FileSystem SP LDAP SP DNS SP RMI SP Corba SP WinReg SP Service Providers NDS Sistema de Arquivos LDAP DNS RMI Registry COS Naming Windows Registry Sistemas de Nomes e Diretórios Fonte: JNDI Tutorial 18
19 JNDI API A API JNDI está incluída no J2SDK 1.3 ou posterior nos pacotes e subpacotes descendentes de javax.naming. Para usar JNDI é preciso ter As classes e interfaces do JNDI (pacotes javax.naming.*) Pelo menos um provedor de serviços JNDI (driver) O Java 2 SDK inclui provedores de serviço (SPs) para LDAP - Lightweight Directory Access Protocol CORBA - Common ORB Architecture e COS name service Java RMI Registry Outros provedores de serviços (para sistema de arquivos, para DNS, para JDBC, para Windows Registry, etc.) podem ser encontrados a partir do site 19
20 Principais classes A API JNDI consiste de cinco pacotes javax.naming contém as principais classes e interfaces Context: interface onde se pode recuperar, ligar, desligar e renomear objetos, e criar e destruir contextos InitialContext: ponto de partida (raiz) para todas as operações Name: abstração de um nome. Contém geralmente um String de texto que corresponde ao nome do objeto ou contexto NameClassPair: contém nome do objeto e de sua classe Binding: contém nome do objeto ligado, nome da classe do objeto e o próprio objeto Reference: abstração de uma referência para um objeto NamingEnumeration: um tipo de java.util.enumeration usado para colecionar componentes de um contexto NamingException: principal exceção do JNDI 20
21 Principais classes (2) javax.naming.directory contém recursos para diretórios DirContext: é uma extensão de Context. Herda todos os seus métodos e acrescenta métodos específicos para diretórios como - getattributes() que recupera todos os atributos, - search() que oferece várias formas de busca e - modifyattributes() que permite remover, criar e redefinir atributos Attribute e Attributes representam um atributo e uma coleção deles javax.naming.event tem como principais compontentes a classe NamingEvent e a interface NamingListener usadas para responder à alterações em objetos e atributos javax.naming.ldap contém interfaces e classes para recursos específicos do LDAP v.3 javax.naming.spi oferece classes e interfaces usados pelos fabricantes de provedores de serviço 21
22 Exemplos: configuração Para executar os exemplos que serão mostrados a seguir, seu ambiente deve estar configurado Software necessário (além do J2SDK) Provedores de serviços fscontext e dns para o sistema de arquivos e DNS (pegue-os no site do JNDI, em java.sun.com) Acesso a um servidor LDAP para os exemplos que usam diretórios (será preciso povoá-lo) Os exemplos estão disponíveis abaixo de cap02/src e podem ser compilados e executados com o Ant É preciso editar o código-fonte e adequá-lo ao seu ambiente Os arquivos de configuração usados neste capítulo não são os mesmos do JNDI Tutorial Foram simplificados para evitar configurações trabalhosas (principalmente os que usam LDAP) 22
23 Exemplo 1: Sistema de Nomes 1:import javax.naming.context; 2:import javax.naming.initialcontext; 3:import javax.naming.namingexception; 4:import java.util.properties; 5: Define provedor 6:class Lookup { 7: public static void main(string[] args) { de serviços 8: Properties env = System.getProperties(); 9: env.put(context.initial_context_factory, 10: "com.sun.jndi.fscontext.reffscontextfactory"); 11: try { Escolhe contexto 12: Context ctx = new InitialContext(env); inicial 13: Object obj = ctx.lookup(args[0]); 14: System.out.println(args[0]+" esta ligado a: " + obj); 15: ctx.close(); 16: } catch (NamingException e) { Lookup.java Procura objeto pelo nome 17: System.err.println("Incapaz de achar "+args[0]+": "+e); 18: } 19: } 20:} Veja em cap02/src/jnditut/naming 23
24 Exemplo 1: execução Para compilar, rode "ant" no diretório cap02/ Para executar a partir do diretório cap02/build/, use > java -cp.;../lib/fscontext.jar;../lib/providerutil.jar jnditut.intro.lookup nome_do_arquivo ou rode o target run do buildfile com o ant: > ant run -Dclass=jnditut.intro.Lookup -Darg=arquivo Contexto default: configure-o em lib/jndi.properties! Pode ser alterado passando propriedade via linha de comando: -Djava.naming.url.provider=file:///caminho Se nome passado for um arquivo, será impresso seu caminho: autoexec.bat ligado a C:\autoexec.bat Se nome for de diretório, será impresso o valor da referência: windows\system ligado a: com.sun.jndi.fscontext.reffscontext@9931f5 24
25 Exemplo 2: acesso a diretórios LDAP Para este exemplo é necessário configurar um servidor LDAP No diretório lib/ há um arquivo exemplos.ldif (LDAP Data Interchange Format) para povoar o diretório O contexto raiz default é o=jnditutorial. Se necessário, altere-o em exemplos.ldif (faça uma busca e substituição) para colocá-lo no contexto do seu domínio LDAP. Por exemplo troque-o por: o=jnditutorial,dc=empresa,dc=com,dc=br Para importar os dados em um servidor OpenLDAP rodando em Linux, use: > ldapadd -x -f exemplos.ldif Para executar* use, a partir do subdiretório build/ local: > java jnditut.intro.getattr ou rode o target run do Ant > ant run -Dclass=jnditut.intro.Getattr 25
26 Exemplo 2: código-fonte 1:import javax.naming.*; 2:import javax.naming.directory.initialdircontext; 3:import javax.naming.directory.dircontext; 4:import javax.naming.directory.attributes; 5:import java.util.properties; 6: 7:class Getattr { 8: public static final String LDAP="localhost:389"; 9: public static void main(string[] args) { 10: Properties env = System.getProperties(); 11: env.put(context.initial_context_factory, 12: "com.sun.jndi.ldap.ldapctxfactory"); 13: env.put(context.provider_url, "ldap://"+ldap+"/o=jnditutorial"); 14: try { 15: DirContext ctx = new InitialDirContext(env); 16: Attributes at = ctx.getattributes("cn=niels Bohr, ou=people"); 17: System.out.println("sn: " + at.get("sn").get()); 18: ctx.close(); 19: } catch (NamingException e) { 20: System.err.println("Incapaz de obter atributo: " + e); 21: } 22: } 23:} Veja em cap02/src/jnditut/naming Getattr.java Coloque aqui o endereço do seu servidor LDAP Contexto raiz (mude se preciso) Subcontextos 26
27 Contexto inicial Precisa ser obtido antes de qualquer operação. Passos: 1: selecionar o provedor de serviços Properties env = new Properties(); env.put(context.initial_context_factory, "classe.do.provedordeservicos"); 2: configurar o acesso ao serviço env.put(context.provider_url, "ldap://xyz.com:389"); env.put(context.outra_propriedade, "valor"); (...) 3: criar um objeto para representar o contexto Context ctx = new InitialContext(env); A configuração (1, 2) pode ser feita via propriedades do sistema passadas em linha de comando via agrumento -Dprop=valor carregados via arquivos de propriedades Principais propriedades java.naming.factory.initial: Context.INITIAL_CONTEXT_FACTORY java.naming.provider.url: Context.PROVIDER_URL 27
28 Recuperação de objetos (lookup) Para obter a referência para um objeto de um contexto usa-se o método lookup() Para usar o objeto retornado é preciso conhecer o seu tipo e fazer o cast (ou narrow, se objeto remoto) para promover a referência Se o objeto for um contexto, lookup() age como um método para mudar de contexto (como o chdir, em Unix) Exemplo O método lookup() usando com o provedor de serviço fscontext retorna um java.io.file pelo nome de arquivo Serviço de nomes para sistema de arquivos env.put(context.initial_context_factory, "com.sun.jndi.fscontext.reffscontextfactory"); env.put(context.provider_url, "file:/cap02/lab/filesys"); Context ctx = new InitialContext(env); File f = (File)ctx.lookup("report.txt"); Diretório raiz do serviço Arquivo localizado na raiz do serviço 28
29 Listagem do conteúdo de contextos Em vez de obter um objeto de cada vez via lookup(), pode-se obter uma lista deles Método list() retorna uma lista (NamingEnumeration) de pares nome / nome_da_classe (objetos do tipo NameClassPair) NamingEnumeration lista = ctx.list("awt"); while (lista.hasmore()) { NameClassPair nc = (NameClassPair)lista.next(); System.out.println(nc); } Trecho de List.java Método listbindings() retorna uma lista de ligações nome / objeto (Binding) NamingEnumeration lista = ctx.listbindings("awt"); while (lista.hasmore()) { Binding bd = (Binding)lista.next(); System.out.println(bd.getName() + ": " + bd.getobject()); } Trecho de ListBindings.java Rode os exemplos*: ant run -Dclass=jnditut.naming.List * Antes de rodar os exemplos em cap02/ rode ant setupfs para configurar o ambiente 29
30 Modificação de ligações, objetos e contextos Adicionando ligações Fruit fruit = new Fruit("orange"); ctx.bind("favorite", fruit); Substituindo ligações Fruit fruit = new Fruit("lemon"); ctx.rebind("favorite", fruit); Removendo ligações ctx.unbind("favorite"); Renomeando objetos ctx.rename("report.txt", "old_report.txt"); Criando novos contextos Context result = ctx.createsubcontext("new"); Destruindo contextos ctx.destroysubcontext("new"); Rode List ou ListBindings após cada operação para ver os resultados Bind.java Rebind.java Unbind.java Rename.java Create.java Destroy.java 30
31 Leitura de Atributos (em diretório LDAP) Recupera todos os atributos do objeto representado pelo RDN "cn=niels Bohr, ou=people" Attributes answer = ctx.getattributes("cn=niels Bohr, ou=people"); Subcontexto for (NamingEnumeration ae = answer.getall(); ae.hasmore();) { Attribute attr = (Attribute)ae.next(); System.out.print("attribute: " + attr.getid()); for (NamingEnumeration e = attr.getall(); e.hasmore(); System.out.println("; value: " + e.next()) ) ; } Recupera apenas atributos "'sn" e "mail" se existirem String[] attrids = {"sn", "mail"}; Attributes answer = ctx.getattributes("cn=niels Bohr, ou=people", attrids); 31
32 Leitura de Atributos (em diretório DNS) Inicialização do contexto Servidor DNS env.put(context.initial_context_factory, "com.sun.jndi.dns.dnscontextfactory"); env.put(context.provider_url, "dns:// /com.br"); Leitura dos atributos DirContext ctx = new InitialDirContext(env); String[] attrids = {"A", "MX", "NS", "CNAME"}; Subcontexto Attributes atts = ctx.getattributes(" attrids); Raiz do contexto pequisado Atributos DNS selecionados System.out.println("Host: argonavis.com.br: "); for (NamingEnumeration ae = atts.getall(); ae.hasmore();) { Attribute attr = (Attribute)ae.next(); System.out.print("attribute: " + attr.getid()); for (NamingEnumeration e = attr.getall(); e.hasmore(); ) { System.out.println("; value: " + e.next()); } } Veja jnditut.dns.getattrs.java 32
33 Modificação de atributos (exemplos LDAP) Tarefa pouco freqüente em um diretório típico modifyattributes(string rdn, int tipo, Attributes atributos) modifyattributes(string rdn, ModificationItem[] selecao) Constante numérica indica o tipo de modificação: DirContext.ADD_ATTRIBUTE DirContext.REPLACE_ATTRIBUTE DirContext.REMOVE_ATTRIBUTE Exemplo: Define um novo mail no lugar do antigo para cn=niels Bohr Attribute att = new BasicAttribute("mail", "[email protected]") ModificationItem[] mods = new ModificationItem[1]; mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, att); ctx.modifyattributes("cn=niels Bohr, ou=people", mods); Veja jnditut.directory.modattrs.java 33
34 Pesquisa simples Principal operação em um diretório é a pesquisa Forma mais simples localiza objeto informando subcontexto e lista de atributos (e valores) Exemplo: Procura objetos contendo atributo sn com valor Bohr e atributo mail (de conteúdo não especificado) Attributes matchattrs = new BasicAttributes(true); matchattrs.put( new BasicAttribute("sn", "Bohr") ); matchattrs.put( new BasicAttribute("mail") ); NamingEnumeration answer = ctx.search("ou=people", matchattrs); Faz a busca dentro do subcontexto ou=people Navega pelos objetos do conjunto de resultados while ( answer.hasmore() ) { SearchResult sr = (SearchResult) answer.next(); System.out.println( ">>>" + sr.getname() ); GetattrsAll.printAttrs( sr.getattributes() ); } implementação de loops for para ler atributos (veja GetAttrsAll.java) 34
35 Filtros de pesquisa Permitem reduzir o escopo da pesquisa realizada em um contexto através de expressões lógicas sobre atributos Exemplo ( &(sn=bohr)(mail=*) ) Objeto que possui atributo sn contendo Bohr e atributo mail Vários operadores (veja livro-texto para mais detalhes) &,,!, =, ~=, <=, >=, =*, *, \ Exemplo // Controles de pesquisa default SearchControls ctls = new SearchControls(); // Define filtro String filtro = "(&(sn=geisel)(mail=*))"; // Pesquisa no contexto ou=people usando o filtro NamingEnumeration res = ctx.search("ou=people", filtro, ctls); 35
36 Controles de pesquisa Permitem controlar abrangência da pesquisa Veja exemplos no livro-texto Limite de Escopo: SearchControls.ONELEVEL_SCOPE: default - pesquisa ocorre apenas no nível atual do contexto SearchControls.SUBTREE_SCOPE: pesquisa ocorre na subárvore de descendentes (inclusive o contexto) SearchControls.OBJECT_SCOPE: pesquisa limita-se ao objeto Limite de Quantidade de respostas Permite definir um limite máximo de respostas (provoca exceção SizeLimitExceededException caso limite seja ultrapassado) Limite de Tempo Define o tempo máximo que uma operação poderá esperar pelas respostas (provoca exceção TimeLimitExceededException) 36
37 Provedores de serviços para objetos Pode-se usar JNDI para mapear nomes a objetos Objetos localizáveis por nome podem ser abstraídos do contexto ou até linguagem em que são usados Aplicações diferentes podem compartilhar objetos Dois drivers JNDI estão disponíveis para acesso a objetos distribuídos no J2SDK SPI CORBA (COS Naming): permite localização de objetos CORBA (serializados em um formato independende de linguagem) com.sun.jndi.cosnaming.cnctxfactory SPI RMI: permite a localização de objetos Java serializados (objetos pode ser usados por outras aplicações Java) com.sun.jndi.rmi.registry.registrycontextfactory 37
38 Objetos RMI Proprieades a definir java.naming.factory.initial ou Context.INITIAL_CONTEXT_FACTORY com.sun.jndi.rmi.registry.registrycontextfactory java.naming.provider.url ou Context.PROVIDER_URL rmi://nome_do_host:1099 (endereço e porta do RMI Registry) Mapeamento Context ctx = new InitialContext(); Fruit fruit = new Fruit("orange"); ctx.bind("favorite", fruit); Localização Context ctx = new InitialContext(); Fruit fruit = (Fruit) ctx.lookup("favorite"); 38
39 Objetos CORBA (RMI sobre IIOP) Proprieades a definir java.naming.factory.initial ou Context.INITIAL_CONTEXT_FACTORY com.sun.jndi.cosnaming.cnctxfactory java.naming.provider.url ou Context.PROVIDER_URL iiop://nome_do_host:1900 (endereço e porta do ORB) Mapeamento Context ctx = new InitialContext(); Fruit fruit = new Fruit("orange"); ctx.bind("favorite", fruit); Localização Converte objeto CORBA em objeto Java Context ctx = new InitialContext(); Object corbafruit = ctx.lookup("favorite"); Object javafruit = javax.rmi.portableremoteobject.narrow(corbafruit, Fruit.class); Fruit fruit = (Fruit)javaFruit; 39
40 Fontes de dados Em servidores J2EE, pools de conexões de bancos de dados são acessíveis através de objetos DataSource, publicadas no JNDI abaixo no namespace java:/ java:/cloudscapedb java:/oracledb O mapeamento dos nomes (bind) não faz parte da especificação J2EE Geralmente é realizada através das ferramentas administrativas do servidor ou XMLs proprietários Para acessar um banco Context ctx = new InitialContext(); javax.sql.datasource ds = (javax.sql.datasource) ctx.lookup("java:/cloudscape"); java.sql.connection = ds.getconnection(); 40
41 Conclusões Sistemas de nomes e diretórios abstraem conceitos específicos a um domínio de problema Maior facilidade do uso de recursos Maior desacoplamento JNDI fornece uma interface genérica para diversos sistemas de nomes e diretórios diferentes Permite que recursos compartilhados, localizados através de diferentes sistemas de nomes e diretórios possam ser armazenados e localizados usando uma interface uniforme A mesma interface pode ser usada para interagir com sistemas de arquivos, LDAP, registro do Windows, DNS, ORBs, RMI Registry e outros repositórios de objetos, etc. 41
42 Fontes [1] Rossana Lee. The JNDI Tutorial, Sun Microsystems, A maior parte deste capítulo é baseada nas primeiras duas seções (trilhas) do JNDI Tutorial. [2] David N. Blank-Edelman. Perl for System Administration. Appendix B: The 10 minute LDAP Tutorial. O'Reilly and Associates, 2000 Introdução à estrutura de registros LDAP. [3] Jeff Hodges. Introduction to Directories and the Lightweight Directory Access Protocol (LDAP). Stanford University, Pequena introdução a serviços de diretórios e LDAP [4] OpenLDAP: Vários documentos sobre configuração e uso do servidor OpenLDAP. [5] Ed Roman et al. Mastering EJB 2.0, Wiley, Apêndice A tem um breve e objetivo tutorial sobre JNDI 42
43 argonavis.com.br Revisão 2.0 (Junho 2002) Tutorial JNDI, dezembro 2001 J500 - Curso de Java 2 Enterprise Edition, Janeiro 2002 Atualizado em Junho
Fundamentos de JNDI. Paulo Pires - 2003
Fundamentos de JNDI Paulo Pires - 2003 Serviço de nomes A principal função de um serviço de nomes é permitir a associação de um nome (ou uma outra representação alternativa mais simples) a recursos computacionais
Java 2 Enterprise Edition Serviços de Localização
Java 2 Enterprise Edition Serviços de Localização Helder da Rocha www.argonavis.com.br 1 Objetivos Este módulo descreve os serviços básicos para localização de recursos em J2EE Localização de componentes
Conceitos, Arquitetura e Design
capítulo 1 Conceitos, Arquitetura e Design 1.1 O que são os serviços de diretórios? Segundo a Wikipédia: Um serviço de diretório é um software que armazena e organiza informações sobre os recursos e os
O que é LDAP? Protocolo Lightweight Directory Access Protocol Conjunto de critérios, mecanismos e métodos TCP/IP Multiplataforma.
1 / 23 O que é LDAP? Protocolo Lightweight Directory Access Protocol Conjunto de critérios, mecanismos e métodos TCP/IP Multiplataforma 2 / 23 Conceitos Serviço de Diretório Armazena, organiza e fornece
Java RMI. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo
Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Objetivos Nesta aula
Aplicações Web com Servlets e JSP
J550 Desenvolvimento de Aplicações Web com Servlets e JSP Helder da Rocha www.argonavis.com.br 1 Objetivos Este curso explora os recursos da linguagem Java para o desenvolvimento de aplicações Web Tem
ACS 5.x: Exemplo de configuração do servidor ldap
ACS 5.x: Exemplo de configuração do servidor ldap Índice Introdução Pré-requisitos Requisitos Componentes Utilizados Convenções Informações de Apoio Serviço de diretório Autenticação usando o LDAP Gerenciamento
Prof. Me. Sérgio Carlos Portari Júnior
Prof. Me. Sérgio Carlos Portari Júnior Ambientes que visam desenvolver aplicações que precisam de um processamento paralelo e distribuído deverão saber lidar com algumas dificuldades. Isto decorre da heterogeneidade
Configurar o ISE para a integração com um servidor ldap
Configurar o ISE para a integração com um servidor ldap Índice Introdução Pré-requisitos Requisitos Componentes Utilizados Informações de Apoio Configurar Diagrama de Rede Configurar OpenLDAP Integre OpenLDAP
Agenda. Instalação e configuração. Processamento de comandos SQL com JDBC. Driver JDBC Criação da classe de conexão
Agenda Instalação e configuração Driver JDBC Criação da classe de conexão Processamento de comandos SQL com JDBC Gerenciamento de conexões Execução simples de consultas Tratamento de exceções Instalação
Aplicações Distribuídas Cliente/ Servidor Corporativas
Aplicações Distribuídas Cliente/ Servidor Corporativas Introdução Desenvolver e distribuir Servlets e aplicativos EJB. Desenvolver e distribuir aplicativos Enterprise JavaBeans (EJB). Introdução Simples
ACS 5.X: Fixe o exemplo de configuração do servidor ldap
ACS 5.X: Fixe o exemplo de configuração do servidor ldap Índice Introdução Pré-requisitos Requisitos Componentes Utilizados Convenções Informações de Apoio Configurar Instale o certificado CA raiz em ACS
contidos na descrição do serviço para localizar, contactar e chamar o serviço. A figura mostra os componentes e a interação entre eles.
Web Services Web Service é um componente de software identificado por uma URI que independe de implementação ou de plataforma e pode ser descrito, publicado e invocado sobre uma rede por meio de mensagens
Introdução. descrever os tipos de interfaces e linguagens oferecidas por um SGBD. mostrar o ambiente de programas dos SGBD s
Introdução Contribuição do Capítulo 2: discutir modelos de dados definir conceitos de esquemas e instâncias descrever os tipos de interfaces e linguagens oferecidas por um SGBD mostrar o ambiente de programas
Unidade II FUNDAMENTOS DE SISTEMAS OPERACIONAIS. Prof. Victor Halla
Unidade II FUNDAMENTOS DE SISTEMAS OPERACIONAIS Prof. Victor Halla Conteúdo Sistema de Arquivos Introdução Sistemas de Diretórios Gerenciamento de Entrada e Saída; Problemas de alocação em memória Perda
Instalação JDK 10/03/2017
1 Instalação JDK 10/03/2017 Máquina Virtual Java utiliza-se do conceito de máquina virtual, onde existe uma camada extra entre o sistema operacional e a aplicação, responsável por traduzir o que sua aplicação
Desenvolvimento de Aplicações Distribuídas
Nomeação Pontifícia Universidade Católica de Minas Gerais Instituto de Ciências Exatas e Informática DAD (2019/01) Tópicos Apresentação da disciplina Introdução Desafios e características Arquitetura Comunicação
Estilo: BlackBoard. BlackBoard = repositório de dados compartilhados
Estilo: BlackBoard Útil para problemas no qual não há uma solução determinística Uma coleção de programas independentes que trabalham cooperativamente em uma estrutura de dados comum (blackboard) Vários
Sistemas de Arquivos. (Aula 23)
Sistemas de Arquivos (Aula 23) Funções de um SO Gerência de processos Gerência de memória Gerência de Arquivos Gerência de I/O Sistema de Proteção 2 Sistemas Operacionais 2008/1 Necessidade de Armazenamento
Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções
Implementação de Genéricos, Iteradores Isabel Harb Manssour Porto Alegre, maio de 2006 Roteiro Implementação de Genéricos Coleções Conceito de Genérico Implementação Iteradores Conceito Utilização ForEach
Programação orientada a objetos
J100 com Programação orientada a objetos TM SE Helder da Rocha ([email protected]) argonavis.com.br 1 Objetivos Este curso tem como objetivo iniciá-lo em Java... mas não apenas isto Visa também a ajudá-lo
Linguagem C Princípios Básicos (parte 1)
Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos
Objetivos. Responder o que é Java; Mostrar as vantagens e desvantagens do Java; Compilar e executar um programa simples.
O que é Java Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/ 1 Objetivos Responder o
Instalação JDK. Joyce França. Professora de Ciência da Computação - IFNMG
Instalação JDK Joyce França Professora de Ciência da Computação - IFNMG Máquina Virtual Java utiliza-se do conceito de máquina virtual, onde existe uma camada extra entre o sistema operacional e a aplicação,
Servidor OpenLDAP. Maurício Severich. 2 o Período - Redes de Computadores
Faculdade de Tecnologia Senai de Desenvolvimento Gerencial SENAI - Departamento Regional de Goiás 2 o Período - Redes de Computadores Sumário 1 Introdução ao LDAP 2 3 4 Introdução ao LDAP Estruturas de
Linguagem de Programação II Implementação
Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa
Configurar o SNMPv3 no WAP125 e no WAP581
Configurar o SNMPv3 no WAP125 e no WAP581 Objetivo A versão 3 do protocolo administración de red simple (SNMPv3) é um modelo de segurança em que uma estratégia da autenticação se estabelece para um usuário
Principais conceitos de CORBA
Principais conceitos de CORBA Tecgraf PUC-Rio fevereiro de 2011 Common Object Request Broker Architecture Uma arquitetura aberta para o desenvolvimento de aplicações distribuídas em um ambiente multilinguagem
Variáveis primitivas e Controle de fluxo
Variáveis primitivas e Controle de fluxo Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/
Sistemas de arquivos distribuídos. ECO036 - Sistemas Paralelos e Distribuídos
Sistemas de arquivos distribuídos ECO036 - Sistemas Paralelos e Distribuídos Sistemas de arquivos distribuídos - Daniel Nogueira 20938 - Felipe Castro Simões 21525 Sumário 1. Introdução 2. Sistemas de
Elementos. Setores, departamentos, diretorias etc.
O Active Directory Active directory Serviço de diretório extensível para gerenciar recursos da rede de modo eficiente Armazena informações detalhadas sobre cada recurso na rede Possibilidade de armazenar
p Pacotes, a grosso modo, são apenas pastas ou diretórios do sistema operacional onde ficam armazenados os arquivos fonte de Java.
Pacotes e Jar 1 Pacotes p Usamos pacotes em java para organizar as classes semelhantes. p Pacotes, a grosso modo, são apenas pastas ou diretórios do sistema operacional onde ficam armazenados os arquivos
Aplicações de Rede DHCP
Aplicações de Rede DHCP DHCP Dynamic Host Configuration Protocol Oferece um IP a um host no momento que este se conecta a uma rede Além de IP outras informações de configuração podem ser também enviadas
Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III
Programação Orientada a Objetos Alexandre César Muniz de Oliveira Métodos e Atributos Parte III Métodos [mod] tipo nome ([tipo arg]) [throws exc]{ [mod]: zero ou mais modificadores separados por espaços
Configurar e controle contas de usuário em um roteador do RV34x Series
Configurar e controle contas de usuário em um roteador do RV34x Series Objetivo O roteador do RV34x Series fornece contas de usuário a fim ver e administrar ajustes. Os usuários podem ser dos grupos diferentes
INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ACESSO, ATRIBUTOS E OPERAÇÕES COM ARQUIVOS PROFESSOR CARLOS MUNIZ
INTRODUÇÃO À TECNOLOGIA DA OPERAÇÕES COM ARQUIVOS PROFESSOR CARLOS MUNIZ INTRODUÇÃO O Sistema de Arquivos é o modo como as informações são armazenadas nos dispositivos físicos de armazenamento, exemplo
Entraremos em sistema linux para realizar algumas tarefas e aprender alguns comandos.
Entraremos em sistema linux para realizar algumas tarefas e aprender alguns comandos. Como se conectar a partir do sistema Windows: Conexão direta SSH: Putty (download) Entrando numa conta no servidor:
LDAP. Laboratório de Computação Científica UFMG
LDAP Laboratório de Computação Científica UFMG Sumário Diretórios Introdução ao LDAP Modelos do LDAP Formato LDIF Distribuição Replicação Diretórios Diretórios Visão Geral O que um diretório faz? O que
Exemplo de Aplicação Distribuída Serviço de Nomes Gerente de Segurança. Callbacks. Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR
n n n n Exemplo de Aplicação Distribuída Serviço de Nomes Gerente de Segurança Callbacks Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR Introdução Estende o modelo de objeto Java para fornecer suporte
Lição 4 Fundamentos da programação
Lição 4 Fundamentos da programação Introdução à Programação I 1 Objetivos Ao final desta lição, o estudante será capaz de: Identificar as partes básicas de um programa em Java Reconhecer as diferenças
Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo ([email protected])
Fundamentos da Plataforma Java EE Prof. Fellipe Aleixo ([email protected]) Como a plataforma Java EE trata o SERVIÇO DE NOMES Serviço de Nomes Num sistema distribuído os componentes necessitam
AULA 1 INTRODUÇÃO AO JAVA
AULA 1 INTRODUÇÃO AO JAVA Ao término dessa aula você terá aprendido: História e características do Java Ambientes e plataformas Java O Java é a base para praticamente todos os tipos de aplicações em rede
JINI. Rodrigo Campiolo João Bosco Mangueira Sobral. Disciplina: Computação Distribuída Curso: Sistemas de Informação
JINI Rodrigo Campiolo João Bosco Mangueira Sobral Disciplina: Computação Distribuída Curso: Sistemas de Informação O que é Jini É um sistema distribuído baseado na idéia de federação de grupos de usuários
Administração dos serviços de redes utilizando linux
Administração dos serviços de redes utilizando linux Joao Medeiros [email protected] Objetivo Apresentar uma visão geral sobre os principais serviços de redes e a instalação e configuração de um servidor
Reuso de Software Aula Maio 2012
Reuso de Software Aula 19 Tópicos da Aula Engenharia de Software baseada em Componentes (CBSE) Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo [email protected] Componentes Modelos de Componentes
Introdução à Computação
Introdução à Computação Jordana Sarmenghi Salamon [email protected] [email protected] http://inf.ufes.br/~jssalamon Departamento de Informática Universidade Federal do Espírito Santo Agenda
Configurando um Datasource para o Microsoft SQL Server 2005 no WebSphere 6.1
Configurando um Datasource para o Microsoft SQL Server 2005 no WebSphere 6.1 por: Luiz Gustavo Stábile de Souza Este tutorial tem o objetivo de ajudar na configuração de um datasource (origem de dados)
Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento
Orientação a objetos Programação Orientada a Objetos Alexandre César Muniz de Oliveira Linguagens orientadas a procedimentos e linguagens orientadas a objetos Unidade de programação: funções e classes
Linguagens de Programação Classificação
Classificação Classificação A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível): Linguagem de máquina (primeira geração) Linguagem assembly - de montagem (segunda
A composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)
Desenvolvimento de Sistemas Web A composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos) Prof. Mauro Lopes 1-31 24 Objetivos Dando continuidade aos estudos sobre JSP,
Introdução a Web Services
Introdução a Web Services Mário Meireles Teixeira DEINF/UFMA O que é um Web Service? Web Service / Serviço Web É uma aplicação, identificada por um URI, cujas interfaces podem ser definidas, descritas
Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II Classes e Objetos Objetos Um conjunto de estados e comportamentos Classes Um modelo para a criação de objetos 1 Pacotes e Java API Pacotes Um conjunto
Configuração de gerenciamento do usuário e do domínio na série do VPN Router RV320 e RV325
Configuração de gerenciamento do usuário e do domínio na série do VPN Router RV320 e RV325 Objetivo A página do gerenciamento de usuário é usada para configurar domínios e usuários. Um domínio é uma sub-rede
Técnico em Informática. Web JavaScript. Profª Ana Paula Mandelli
Técnico em Informática Web JavaScript Profª Ana Paula Mandelli [email protected] Para o JavaScript - NetBeans O NetBeans é um ambiente de desenvolvimento integrado (IDE) Java desenvolvido pela
Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura
Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação
03 AULA PRÁTICA Domain Name System: DNS (WIRESHARK) (Baseada nas Práticas do livro de James Kurose 4Edição)
Universidade Federal do Ceará (UFC) - Campus Quixadá Disciplina: Redes de Computadores Período 2009.2 Profa. Atslands Rego da Rocha ([email protected]) Data: 09/2009 03 AULA PRÁTICA Domain Name System: DNS
Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação
Java Remote Method Invocation Java Remote Method Invocation () é um protocolo Java para comunicação entre processos Permite objetos Java invocar transparentemente métodos de outros objetos (que podem estar
Objetos e Componentes Distribuídos: EJB e CORBA
: EJB e CORBA Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Objetivos
Sistemas Distribuídos
Sistemas Distribuídos LICENCIATURA EM COMPUTAÇÃO Prof. Adriano Avelar Site: www.adrianoavelar.com Email: [email protected] 1. Que são sistemas abertos? É um sistema que oferece serviços de acordo com
Introdução. Atributos em Java. Atributos. Acesso à atributos em Java. Atributo versus variável. Atributos, métodos e encapsulamento.
Introdução Atributos, métodos e encapsulamento [email protected] Atributos Ipos de acesso: private, public, protected e default Encapsulamento Métodos Construtores Criando objetos Departamento de Ciências
Segurança da Informação
Segurança da Informação Banco de Dados LDAP Rodrigo Rubira Branco - [email protected] O que é Serviço de Diretorio? Banco de dados especializado em armazenar informações sobre objetos Caracteristicas
Configurar o protocolo multiple spanning-tree (MSTP) em um interruptor
Configurar o protocolo multiple spanning-tree (MSTP) em um interruptor Objetivo O Spanning Tree Protocol (STP) é um protocolo de rede que assegure uma topologia sem loop para uma rede de área local (LAN)
Pacotes Organizando suas classes e bibliotecas
Pacotes Organizando suas classes e bibliotecas Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/
CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO
CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO CLASSES E OBJETOS PARA PROGRAMAÇÃO ORIENTADA A OBJETOS Classes são estruturas das linguagens de POO criadas para conter os dados que
Configurar os ajustes LAN e DHCP no roteador do RV34x Series
Configurar os ajustes LAN e DHCP no roteador do RV34x Series Objetivo Uma rede de área local (LAN) é uma rede limitada a uma área tal como uma HOME ou uma empresa de pequeno porte que seja usada para interconectar
Programação Orientada a Objetos
Programação Orientada a Objetos Prof. Kléber de Oliveira Andrade [email protected] Coleções, Propriedades, Resources e Strings (Parte 2) Coleções É comum usarmos um objeto que armazena vários outros
