Sistemas Distribuídos: Conceitos e Projeto Java RMI



Documentos relacionados
Sistemas Distribuídos

Adriano Reine Bueno Rafael Barros Silva

Java RMI. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

Invocação de Métodos Remotos

Sistemas Distribuídos

Sistemas Distribuídos

SISTEMAS DISTRIBUÍDOS

Java RMI - Remote Method Invocation. Programação com Objetos Distribuídos (C. Geyer) Java-RMI 1

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

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

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

Sistemas Distribuídos

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

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

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

Sistemas Distribuídos

FBV - Linguagem de Programação II. Um pouco sobre Java

UNIVERSIDADE. Sistemas Distribuídos

RMI: Uma Visão Conceitual

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

Arquiteturas de Sistemas Distribuídos

Sistemas Distribuídos Modelo Cliente-Servidor

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

Aula 03-04: Modelos de Sistemas Distribuídos

Enterprise Java Beans

Sistemas Distribuídos

2 Ferramentas Utilizadas

Slide 1 Deitel/Deitel, 8e. Java Como programar Copyright 2010 Pearson Education

Java para Desenvolvimento Web

Android e Bancos de Dados

Middleware de Aplicações Paralelas/Distribuídas

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes

Invocação de Métodos em Objectos Remotos

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

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

Rede de Computadores (REC)

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

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

Sistemas Operacionais. Curso Técnico Integrado Profa: Michelle Nery

Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

Disciplina de Redes de Computadores Estudo Dirigido para a Prova II Professor Dr Windson Viana de Carvalho

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

Programação Orientada a Objetos. Pacotes e CLASSPATH: Definifdo e Usando Pacotes

No projeto das primeiras redes de computadores, o hardware foi a principal preocupação e o software ficou em segundo plano.

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

UFG - Instituto de Informática

Linguagem de Programação III

SOA - Service Oriented Architecture. Marcelo Canevello Ferreira

Aleph. Entre Bibliotecas. Reunião da REJE 09 de novembro de 2011

Sistemas Operacionais. Prof. André Y. Kusumoto

INE Sistemas Distribuídos

ANEXO V Edital nº 03508/2008

3 SCS: Sistema de Componentes de Software

Manual de Instalação ( Client / Server ) Versão 1.0

REDES DE COMPUTADORES E TELECOMUNICAÇÕES MÓDULO 12

Projeto Integrador Segurança de Redes e Transmissão de Dados

Gestão de projectos na Web

Java Threads. Introdução

Projetar Arquitetura

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

Prova Específica Cargo Desenvolvimento

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

Programação Orientada a Objetos (DPADF 0063)

R2D2E TANK SIMULATOR

Programação Orientada a Objetos (DPADF 0063)

Java. Marcio de Carvalho Victorino

Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE PÓS-GRADUAÇÃO EM SISTEMAS E COMPUTAÇÃO TÓPICOS AVANÇADOS EM SISTEMAS INTEGRADOS E DISTRIBUÍDOS II

Programação Orientada a Objetos (DPADF 0063)

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

OBJETOS DISTRIBUÍDOS E INVOCAÇÃO REMOTA

Camada de Aplicação. Prof. Eduardo

Aula 1 Cleverton Hentz

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

TRABALHO DE REDES DE COMPUTADORES 1 GNUTELLA

Redes de Computadores II

Usando o Conference Manager do Microsoft Outlook

Questão 1. Benefícios. Benefícios. Desafios. Desafios. 1. Quais são os desafios e benefícios em potencial da computação distribuída?

5.1 Exemplos de uso Mediante a instanciação de componentes específicos, o OiL pode ser configurado

Desenvolvimento Cliente-Servidor 1

Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite

Introdução ao Modelos de Duas Camadas Cliente Servidor

Introdução à Camada de Aplicação. Prof. Eduardo

Java RMI. Alcides Calsavara

Sistemas Distribuídos

Padrão ix. Q-Ware Cloud File Publisher Manual para realização do Donwload de Arquivos. Versão

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente

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

Transcrição:

Sistemas Distribuídos: Conceitos e Projeto Java RMI Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.deinf.ufma.br 19 de agosto de 2010 Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 19 de agosto de 2010 1 / 17

Introdução a Java RMI 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. Fontes: http://java.sun.com/docs/books/tutorial/rmi/overview.html ou http://www.guj.com.br/java.tutorial.artigo.37.1.guj Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 19 de agosto de 2010 2 / 17

Introdução a Java RMI A definição do comportamento e a implementação do comportamento são conceitos separados: a definição do serviço remoto é codificado usando uma interface (interface) Java, e a implementação do serviço remoto é codificado usando uma classe (class); A arquitetura RMI torna o uso de objetos Java distribuídos similar ao uso de objetos Java locais = transparência de acesso. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 19 de agosto de 2010 3 / 17

Implementação Java RMI Camada Stub e Skeleton: intercepta as chamadas de métodos feitas pelo cliente para que a variável de referência da interface redirecione essas chamadas para o serviço RMI remoto; Camada Remote Reference Layer: interpreta e gerencias referências feitas dos clientes para os objetos do serviço remoto. A conexão do cliente ao servidor é Unicast (um-para-um); Camada de transporte: é baseada nas conexões TCP/IP entre as maquinas em uma rede. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 19 de agosto de 2010 4 / 17

Argumentos e Valores de Retorno Podem ser passados de ou para um método remoto qualquer entidade que seja uma instância de um tipo primitivo, objeto remoto ou objeto serializável (que implementa a interface java.io.serializable; Alguns objetos não atendem a estes critérios, normalmente por encapsular informação que faz sentido somente em um único espaço de endereçamento, como threads e descritores de arquivos; Muitas classes core Java, incluindo as constantes dos pacotes java.lang e java.util implementam a interface Serializable. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 19 de agosto de 2010 5 / 17

Objetos Remotos e Locais Objetos remotos são passados por referência; Objetos locais são passados por cópia, utilizando-se o mecanismo de serialização; Por padrão, todos os campos são copiados excetos aqueles marcados como estáticos ou transientes. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 19 de agosto de 2010 6 / 17

Localizando o Serviço Remoto RMI Pode-se utilizar diferentes tipos de serviços de diretório, incluindo o JNDI (Java Naming and Directory Interface); O próprio RMI inclue um simples serviço, chamado de RMI Registry; Ele executa em cada maquina que hospeda o serviço remoto, por definição na porta 1099; Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 19 de agosto de 2010 7 / 17

Localizando o Serviço Remoto RMI O servidor: Cria um serviço remoto, instanciando o objeto que implemente aquele serviço; Exporta aquele objeto para o RMI. Quando o objeto é exportado o RMI cria um serviço que aguarda as conexões do cliente; Registra o objeto no RMI Registry, com um nome público. O Cliente: O RMI Registry é acessado através da classe estática Naming; Ela provém o método lookup(), que aceita a URL que especifica o nome do servidor e o nome do serviço desejado e retorna uma referência remota para o objeto do serviço; A URL é formada como seguinte: rmi://<host_name>[:port_number]/<service_name> Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 19 de agosto de 2010 8 / 17

Passos para o Desenvolvimento do Servidor 1 Criar a interface do servidor, que deve estender a classe Remote. Todo método deve lançar a exceção RemoteException; 2 Implementar a interface criada; 3 Escrever o código que instancia a implementação do servidor, exporta o objeto para o RMI e o registra junto ao serviço de nomes da tecnologia Java (RMI registry). Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 19 de agosto de 2010 9 / 17

Serviço de Nomes RMI Registry LocateRegistry: classe responsável por criar o stub para acesso ao serviço de registro (Registry); Alguns Métodos: createregistry(int port): cria e exporta uma instância de Registry em uma máquina local que aceita pedidos em uma porta específica; getregistry(): retorna uma referência para o objeto remoto Registry para a máquina local no porta 1099, que é a porta padrão do serviço de registro; getregistry(string host): retorna um referência para o objeto remoto Registry na máquina específica na porta 1099. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 19 de agosto de 2010 10 / 17

Serviço de Nomes RMI Registry Métodos da interface Registry: void bind(string name, Remote obj): associa a referência remota ao nome especificado; String[] list(): retorna um array dos nomes registrados; Remote lookup(string name): retorna a referência remota correspondente ao nome especificado; void rebind(string name, Remote obj): substitui a amarração para o nome espeficado, associando-o à referência remota especificada; void unbind(string name): remove a amarração para o nome especificado. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 19 de agosto de 2010 11 / 17

Exemplo de Código Exemplo de código: calculadora Calculator.java CalculatorImpl.java CalculatorServer.java Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 19 de agosto de 2010 12 / 17

Implementando o Cliente Obter uma referência ao objeto remoto através de uma chamada ao método lookup( servidor ) da interface Registry; Basta agora utilizar o objeto remoto como se fosse local. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 19 de agosto de 2010 13 / 17

Exemplo de Código Exemplo de código: cliente da calculadora. CalculatorClient.java Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 19 de agosto de 2010 14 / 17

Segundo Exemplo: Novas Funcionalidades do Servidor de Cotações Consultar a cotação de uma moeda; Cadastrar uma nova cotação para uma moeda; Alterar a cotação de uma moeda; Excluir a cotação de uma moeda. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 19 de agosto de 2010 15 / 17

Segundo Exemplo de Código Servidor RMI do Sistema de Cotações: BDCotacoes.java BDCotacoesImpl.java ServidorBDCotacoes.java Cliente RMI do Sistema de Cotações: ClienteBDCotacoes.java Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 19 de agosto de 2010 16 / 17

Terceiro Exemplo de Código Compute Engine. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 19 de agosto de 2010 17 / 17