Java Remote Method Invocation Java RMI Mestrando Maurício Cristal Prof. Dr. Fernando Luís Dotti Prof. Dr. Celso Maciel da Costa
Sumário Introdução Arquitetura genérica Arquitetura RMI Exemplo - Counter Exercícios
Introdução Java RMI - arquitetura de objetos distribuídos entre JVMs remotas Integra à linguagem Java o modelo de objetos distribuídos (APIs) Disponível a partir da versão 1.1 do compilador JDK (Sun)
Arquitetura genérica
Arquitetura RMI Javac Javac Rmic Rmic Responsável pelo transporte
Java RMI - Modelo de objetos Clientes: superclasse java.rmi.RemoteObject Servidores: superclasse java.rmi.RemoteServer Interfaces: superclasse java.rmi.Remote Exceções: superclasse java.rmi.RemoteException
Java RMI Requisição e resposta de serviços Chamada síncrona Chamadas assíncronas e deferidas não são suportadas
Java RMI - Marshalling Superclasse java.io.serializable Métodos readObject e writeObject permitem a escrita dos parâmetros em stream de bytes Permitem também a serialização de classes e objetos Por segurança classes podem desabilitar a sua serialização
Java RMI - IDL Não define IDL Interfaces são definidas em Java Compiladas com o compilador rmic, gerando o stub e esqueleto interpretados Utiliza-se o runtime java para executar os proxies
Java RMI - Invocações Sempre estáticas, não suporta invocações dinâmicas Realizadas através dos proxies compilados com rmic
Java RMI - Serviço de nomes Superclasse java.rmi.Naming Através de nomes recupera referências para objetos Utiliza uma URL e porta TCP para cada servidor de nomes
Java RMI - Serviço de nomes ContaBancária acct = new ContaBancáriaImpl(); String url = “rmi://java.sun.com/account”; //bind da url ao objeto remoto java.RMI.Naming.bind(url, acct); .............. acct = (ContaBancária) java.RMI.Naming.lookup(url);
Java RMI - Serviço de nomes Associações entre referências remotas e nomes são gerenciadas por um processo daemon denominado rmiregistry Pode ser classificado como o servidor de nomes propriamente dito
Java RMI - Serviço de ciclo de vida Determinado pela própria JVM Objeto RMI é um objeto Java com funcionalidades de distribuição Exemplo: operador new
Java RMI - Outros serviços Eventos Transações Trader Não são definidos na arquitetura RMI
Java RMI - Interoperabilidade inter-ORBs Objetos RMI trocam mensagens com objetos CORBA, através do protocolo IIOP RMI-over-IIOP, compatibilidade adicionada na versão JDK 1.1.6
Interoperabilidade inter-ORB
Bibliografia Orfali, Robert, Harkey, Dan. Client/server Programming with Java and CORBA. Second Edition; New York, NY: John Wiley and Sons Inc, 1998. 1022p. Farley, Jim. Java Distributed Computing. The Java Series. California: O’Reilly Associates. 1998. Java Remote Method Invocation Specification. http://java.sun.com/products/rmi
Java Remote Method Invocation Java RMI Mestrando Maurício Cristal Prof. Dr. Fernando Luís Dotti Prof. Dr. Celso Maciel da Costa