Adriano Reine Bueno Rafael Barros Silva



Documentos relacionados
Sistemas Distribuídos

Invocação de Métodos Remotos RMI (Remote Method Invocation)

Invocação de Métodos Remotos

Sistemas Distribuídos

Java 2 Standard Edition. Fundamentos de. Objetos Remotos. Helder da Rocha

Sistemas Distribuídos

Sistemas Distribuídos

Sistemas Distribuídos: Conceitos e Projeto Java RMI

RMI: Uma Visão Conceitual

SISTEMAS DISTRIBUÍDOS

UNIVERSIDADE. Sistemas Distribuídos

Sistemas Distribuídos Métodos de Invocação Remota II. Prof. MSc. Hugo Souza

Princípios de Sistemas Distribuídos. Tecnologias utilizadas em sistemas distribuídos Aula 5

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

Grupo I [6v] Considere o seguinte extracto de um programa de definição de uma calculadora apenas com a função soma de dois valores reais

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução

Sistemas Distribuídos

INE Sistemas Distribuídos

MIDDLEWARE Aplicativos RMI, RPC e eventos Camadas Protocolo Requesição-Respostal Middleware Representação Externa dos Dados Sistemas Operacionais

CAPÍTULO 7 JAVA 7.1 CARACTERÍSTICAS DA LINGUAGEM

Exemplos práticos do uso de RMI em sistemas distribuídos


Sistemas Paralelos e Distribuídos /2004 Curso: Matemática /Informática Sistemas Distribuídos /2004 Curso: Ensino da Informática

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

UNIVERSIDADE. Sistemas Distribuídos

Num sistema de objectos distribuídos, dois conceitos são fundamentais.

UFG - Instituto de Informática

Componentes para Computação Distribuída

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Linguagem de Programação Orientada a Objeto. Introdução a Orientação a Objetos Professora Sheila Cáceres

Comunicação em Sistemas Distribuídos

Capítulo VI CORBA. Common Object Request Broker Architecture. [Cardoso2008] Programação de Sistemas Distribuídos em Java, Jorge Cardoso, FCA, 2008.

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) C# Remote V0 1

COMUNICAÇÃO INTER-PROCESSOS JAVA RMI e RPC. Prof. Cesar Augusto Tacla

Um pouco do Java. Prof. Eduardo

1 a. Sumário. 1. Conceitos Básicos a. Invocação remota (RPC/RMI) b. Semântica de invocação remota c. Invocação remota de métodos (RMI)

Sistemas Distribuídos Métodos de Invocação Remota IV. Prof. MSc. Hugo Souza

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Middleware de Aplicações Paralelas/Distribuídas

Sistemas Distribuídos

Introdução à Linguagem Java

Padrões Arquiteturais. Sistemas Distribuídos: Broker

Trabalho de Sistemas Distribuídos

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes

Fundamentos de Java. Prof. Marcelo Cohen. 1. Histórico

Web Services. (Introdução)

SISTEMAS DISTRIBUIDOS

Considerações no Projeto de Sistemas Cliente/Servidor

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com

Sistemas distribuídos:comunicação

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Programação de Computadores - I. Profª Beatriz Profº Israel

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Sistemas Distribuídos

Introdução ao Modelos de Duas Camadas Cliente Servidor

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

SISTEMAS OPERACIONAIS

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da

Java RMI. Alcides Calsavara

UFG - Instituto de Informática

3 SCS: Sistema de Componentes de Software

Sistemas Operacionais

Introdução à Linguagem Java. Departamento de Informática Prof. Anselmo C. de Paiva

Java & OpenJDK. Thiago S. Gonzaga. Sun Campus Ambassador thiago.gonzaga@sun.com

UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTÁTISTICA GRADUAÇÃO EM CIÊNCIAS DA COMPUTAÇÃO DISCIPLINA: COMUNICAÇÃO DE DADOS

Capítulo 1. Introdução ao Java. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Comunicação Inter-Processos. Prof. Adriano Fiorese. Conceitos Iniciais

Quarta-feira, 09 de janeiro de 2008

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor

CORBA. Common Object Request Broker Architecture. Unicamp. Centro de Computação Rubens Queiroz de Almeida

Suporte ao desenvolvimento de jogos multi-jogador, sem exigência de tempo real

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition)

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo

Linguagem de Programação Introdução a Linguagem Java

SOA - Service Oriented Architecture. Marcelo Canevello Ferreira

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Desenvolvimento Cliente-Servidor 1

Figura 01 Kernel de um Sistema Operacional

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática

Sistemas Operacionais

Um Driver NDIS Para Interceptação de Datagramas IP

Linguagens de. Aula 02. Profa Cristiane Koehler

ESTUDO DE CASO WINDOWS VISTA

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

GERADOR DE CÓDIGO JSP BASEADO EM PROJETO DE SGBD. Acadêmico: Maicon Klug Orientadora: Joyce Martins

Programação com sockets (em Java)

Linguagem Java. Arquitetura e Ambiente de Desenvolvimento. Arquitetura e Ambiente de Desenvolvimento Prof. Anderson Augustinho Uniandrade

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

Orientação a Objetos com Java

Capítulo 7 CAMADA DE TRANSPORTE

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M

Programação para Web Artefato 01. AT5 Conceitos da Internet

Transcrição:

Adriano Reine Bueno Rafael Barros Silva

Introdução RMI Tecnologias Semelhantes Arquitetura RMI Funcionamento Serialização dos dados Criando Aplicações Distribuídas com RMI Segurança Exemplo prático Referências

Sistemas distribuídos requerem que aplicações executando em diferentes espaços de endereçamento, potencialmente em máquinas diferentes, sejam capazes de trocar dados Java RMI é o mecanismo que permite um objeto invocar um método de outro objeto que existe em outro espaço de endereçamento A invocação de método remoto permite que um objeto executando sobre uma determinada JVM invoque métodos sobre um objeto executando sobre outra JVM

Sockets: mecanismo básico de comunicação grande flexibilidade, mas complexidade de programação. RPC: comunicação abstraída para o nível do procedimento. abstração desenquadrada do modelo de programação, inapropriado para Java. RMI: comunicação fundida com o mecanismo de invocação de métodos integração com o modelo de programação.

Java Orientada a objetos Possui diversas APIs Multi-plataforma: Java Virtual Machine (JVM) Integrada à Internet: Applets, JavaScript, JSP, Servlets Suporte a componentes: JavaBeans Fácil aprendizagem e boa aceitação entre programadores J2SE (para desktops) e J2EE (para servidores) possuem suporte para a invocação remota de métodos (RMI).

RMI é uma interface de programação que permite que um programa rodando em uma dada máquina efetue chamadas à objetos instanciados em outra máquina Através da utilização da arquitetura RMI, é possível que um objeto ativo em uma máquina virtual Java possa interagir com objetos de outras máquinas virtuais Java, independentemente da localização dessas máquinas virtuais Aplicações RMI geralmente consistem de dois programas separados Cliente e servidor

Pacote java.rmi API para implementação de objetos clientes, servidores e interfaces API para utilizar os serviços de runtime Serviços de runtime Registro de objetos remotos (permite localizá-los) Ferramentas JRMI: Primeira aparição: JDK 1.1 Até JDK 1.4: compilador rmic para gerar stubs Após: Stubs podem ser gerados automaticamente pela JVM (a partir de JDK 1.5)

Socket RMI Transporte UDP / TCP JRMP Descrição do Serviço Não existe Java Interface Localização Conhece endereço RMI Naming Service Look Up matching Não existe Exact String Match Remote reference Socket Proxy object Synchronicity Synchronous Synchronous Garbage Collection Não existe Não existe Language paradigm Streams Method call

Existem duas outras tecnologias que se assemelham muito com a RMI: CORBA Já a tecnologia CORBA é divulgada à mais tempo e possui a vantagem de possuir bibliotecas em diversas linguagens, assim um objeto CORBA pode ser utilizado em vários programas escritos em linguagens diferentes.net Remoting Pode ser vista como a resposta Microsoft à tecnologia RMI, e possui quase as mesmas características A tecnologia RMI foi feita exclusivamente para a plataforma Java

Stub e Skeleton Camada de Referência Remota Camada de Transporte

Stub Representa o servidor para o cliente Efetua serialização e envio dos parâmetros Recebe a resposta do servidor, desserializa e entrega ao cliente Skeleton Recebe a chamada e desserializa os parâmteros enviados pelo cliente Faz a chamada no servidor e retorna o resultado ao cliente.

Camada de Referência Remota Responsável pela localização dos objetos nas máquinas da rede Permite que referências para um objeto servidor remoto sejam usadas pelo cliente para chamar métodos Camada de Transporte Cria e gerencia conexões de rede entre objetos remotos Elimina a necessidade do código cliente ou do servidor interagirem com o suporte da rede É baseada nas conexões TCP/IP entre as máquinas em uma rede.

O servidor, ao iniciar, se registra no serviço de nomes (RMI Registry) O cliente obtém uma referência para o objeto servidor no serviço de nomes e cria o stub O cliente chama o método na stub fazendo uma chamada local A stub serializa os parâmetros e transmite a chamada pela rede para o skeleton do servidor

O skeleton do servidor recebe a chamada pela rede, desserializa os parâmetros e faz a chamada do método no objeto servidor O objeto servidor executa o método e retorna um valor para o skeleton, que o desserializa e o envia pela rede à stub do cliente A stub recebe o valor do retorno serializado, o desserializa e por fim o repassa ao cliente

É preciso serializar e desserializar os parâmetros da chamada e valores de retorno para transmiti-los através da rede Utiliza o sistema de serialização de objetos da máquina virtual Tipos pré-definidos pela linguagem Objetos serializáveis: implementam interface java.io.serializable

Passos gerais para desenvolver aplicação distribuída com RMI: Projetar e implementar os componentes de sua aplicação distribuída Compilar os fontes Tornar as classes acessíveis via rede Iniciar a aplicação

Projetar e implementar os componentes de sua aplicação distribuída Inicialmente, determine a arquitetura de sua aplicação, definindo componentes locais e componentes acessíveis remotamente: Defina as interfaces remotas: especifica métodos que podem ser invocados remotamente por um cliente Defina tipos dos parâmetros e retorno dos métodos Implemente os objetos remotos: objetos remotos devem implementar uma ou mais interfaces. Implemente os clientes

Compile os fontes Como qualquer programa java, use javac para compilar os programas fonte Declarações de interfaces remotas, suas implementações, outras classes de serviço, clientes Versões anteriores a JSE 5.0 necessitam do rmic

Tornar as classes acessíveis via rede Neste passo, torne certas definições de classes acessíveis via rede Como definições para interfaces remotas e seus tipos associados, e definições de classes que precisam ser acessadas por clientes e servidores Geralmente tornam-se acessíveis através de um servidor web Iniciar a aplicação Inclui, além do cliente e do servidor, o serviço de registro de nomes, rmiregistry

O RMI fornece o "RMISecurityManager", sem o qual objetos locais se tornam incapazes de baixar código ou utilizar métodos remotos O RMISecurityManager segue o modelo de segurança do JDK 1.6 no qual o código, local ou remoto, é sempre executado sob uma política de segurança A política de segurança define um conjunto de permissões disponíveis para o código Cada permissão define um acesso a um recurso em particular, como por exemplo, permissão de leitura ou escrita a um diretório específico ou permissão de conexão para um host e porta

Exemplo Prático

http://pt.wikipedia.org/wiki/rmi dainf.ct.utfpr.edu.br/~tacla/espsd/aula3/0070-rmi- RPC.pdf http://pt.wikibooks.org/wiki/java_rmi http://www.dca.fee.unicamp.br/cursos/poojava/objdis t/javarmi.html