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



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

SISTEMAS DISTRIBUÍDOS

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

Invocação de Métodos Remotos

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

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

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

Programando sistemas distribuídos com objetos distribuídos na rede TCP/IP. Prof. Me. Sérgio Carlos Portari Júnior

Java RMI. Alcides Calsavara

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

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

15/4/15. Processamento Paralelo Middleware Orientado a Objetos. Sistema operacional é a única infraestrutura para interação. Middleware é adicionado

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

Sistemas Distribuídos

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

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

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

Exemplo de Aplicação Distribuída Serviço de Nomes Gerente de Segurança. Callbacks. Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR

Sistemas Distribuídos

Java RMI Remote Method Invocation

INTRODUÇÃO. RPC x RMI

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

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

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

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

Remote Method Invocation (RMI)

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)

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

Sistemas Distribuídos: Conceitos e Projeto Java RMI

Sistemas Distribuídos

Chamada Remota de Métodos. Marco Túlio de Oliveira Valente

Lição 11 Herança, polimorfismo e interfaces

Invocação de Métodos em Objectos Remotos

Adriano Reine Bueno Rafael Barros Silva

Sistemas Distribuídos

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

Tipos, Literais, Operadores

Tipos, Literais, Operadores

INF01018 Aula Prática 2 RMI Remote Method Invocation

Capítulo V Sistemas de Objectos Distribuídos

Simulado de Linguagem de Programação Java

Tratamento de Exceções. LPG II Java. Tratamento de Exceções. Conceito de Exceções. Exemplo

Sistemas Distribuídos RPC Remote Procedure Call

Comunicação entre Processos

Invocação Remota MC704

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

APÊNDICE A EXEMPLO DE APLICAÇÃO

PROGRAMAÇÃO JAVA. Parte 3

Módulo 1. Introdução. Programação Orientada a Objetos I Java (Rone Ilídio)

Tratamento de Exceções cont. Profa. Thienne Johnson EACH/USP

Principais conceitos de CORBA

Middleware de Aplicações Paralelas/Distribuídas

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Obs.: para realizar estas atividades tenha certeza de que já tenha instalado no sistema operacional o Java JDK e o NetBeans.

Teste-Tipo de Sistemas Distribuídos RPC, RMI, Web Services Guia de resolução

Linguagem de Programação II Implementação

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

Invocação Remota. Prof. Leonardo Barreto Campos. 1/29

Transcriçã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 em máquinas diferentes objetos remotos) Java libera o programador de tratar de detalhes como endereçamento e codificação/ decodificação de mensagens Chamadas Remotas de Procedimentos (RPC) consiste em chamada remota de procedimentos em Java (onde as operações são representadas por métodos) Chamada Remota de Procedimento (RPC) ou Invocação Remota de Método () ou Chamada Remota de Função Método de transferência de controle de parte de um processo para outra parte Modelo de RPC é derivado da Chamada de Procedimentos Convencionais RPC - Implementação Stubs do lado do cliente: Stubs Stubs do lado do servidor: Skeleton Stubs Referência Remota Protocolo derede Skeleton Referência Remota Protocolo derede 1

Compilador rmic O compilador rmic recebe como entrada a descrição dos métodos remotos gera dois arquivos: Stub e Skeleton. Skeleton (servidor) Descrição dos Métodos remotos rmic Stub (cliente) Localização de Objetos Remotos Seria impraticável se para cada invocação de método remoto fosse necessário incluir o par (máquina,porta) para identificar onde se encontra o objeto que contém o método oferece um Serviço de Nomes ( Registry) que oferece informações sobre a localização de objetos remotos. o rmiregistry executa em um endereço bem conhecido. Registry Programação com ref_obj:metodo() Naming.lookup( uri://sol.dimap.ufrn.br/servobja ) Naming.bind( servobja, ref_obj); rmi registry (nome,ender) O modelo : O servidor define objetos que o cliente pode usar remotamente Os clientes podem invocar métodos nesse objeto remoto como se ele estivesse executando localmente. esconde o mecanismo subjacente de transporte, via rede, de argumentos dos métodos e valores de retorno. ref_obj 2

Programação com Defina uma interface que declara os métodos remotos O programa servidor deve incluir uma class that implementa essa interface. deve criar um objeto remoto e registrá-lo no serviço de nomes (rmi register) O programa cliente deve perguntar ao serviço de nomes pela referência do objeto remoto. deve invocar o método sobre o objeto remoto Interface Similar a classe Não há implementação, apenas declaração de métodos Tudo é público É uma API que pode ser implementada por uma classe public interface BDados{ public string ler(); public void escreve(string); public interface HelloWorld{ public string hello(); Interface com métodos remotos A interface definida pelo servidor deve declarar que os métodos da interface serão invocados por clientes remotos A interface deve estender a interface Java Remote que o pacote java.rmi oferece public interface HelloWorld extends Remote{ public string hello() throws RemoteException; Necessária para Sinalizar erros da Chamada remota Indica que a interface é remota Implementação da Classe Criar uma classe que implementa a interface. A classe deve estender UnicastRemoteObject * O código main() deve: Criar um objeto remoto Registrar esse objeto no serviço de Nomes A classe precisa definir um construtor para RemoteException! A classe será usada pelo compilador rmic para criar o código do stub e do skeleton. 3

Implementação da Classe import java.rmi.server.* public class HelloWorldImpl extends UnicastRemoteObject implements HelloWorld{ public HelloWorldImpl() throws RemoteException {. public string hello() { return ==== Hello World!!!==== ; public static void main (String args[]) { try { // criando o objeto remoto HelloWorldImpl obj = new HelloWorldImpl(); // registrando esse objeto no serviço de nomes Naming.bind( HelloWorldServer, obj); catch (RemoteException e) { System.out.println( ERRO ) Gerando Stubs e Skeletons Compile a interface remota e a implementação: > javac HelloWorld.java HelloWorldImpl.java Use rmic para gerar HelloWorldImpl_stub.class, HelloWorldImpl_skel.class > rmic HelloWorldImpl O cliente precisa obter, do serviço de nomes, a referência para o objeto remoto O serviço de nomes usa URLs para identificar objetos remotos. Implementação try { // recuperando o objeto remoto via o servidor de nomes Object obj= Naming.lookup( uri://pontanegra.dimap.ufrn.br /HelloWorldServer); // invocando o método hello do servidor remoto mensagem = obj:hello() catch (RemoteException e) { 4

Executando... Inicialmente deve-se executar o servidor de Nomes start rmiregistry Em seguida deve-se executar o servidor: java HelloWorld Passos do 1. Defina a interface do servidor (estendendo a interface java.rmi.remote) 2. Escreva o código do servidor que implementa a interface (herdando da classe java.rmi.unicastremoteobject) 3. Compile o servidor Use o compilador javac para produzir o arquivo.class Execute o compilador rmic para obter o stub e skeleton 4. Execute o programa servidor (o rmiregister tem de estar executando antes) 5. Execute o cliente Interface Remota Implementaçao Implementa uma idéia elementar de Sistema baseado em Middleware stub skeleton Desenvolvimento Execução stub rede skeleton 5