Implementação de um Sistema de Objetos Remoto baseado em Java RMI. Ricardo Couto Antunes da Rocha INF/UFG

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

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

Java RMI Remote Method Invocation

Sistemas Distribuídos

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

RMI e RPC. RPC significou um passo muito grande em direcção à

UFG - Instituto de Informática

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

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

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

Sistemas Distribuídos

Aspectos para Construção de Aplicações Distribuídas

Sistemas Distribuídos: Conceitos e Projeto Java RMI

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

Objetivo: Praticar a aplicação de acesso remoto via protocolo RDP (Remote Desktop) em ambientes Microsoft Windows.

Computação II Orientação a Objetos

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

Sistemas Distribuídos

Classes e Objetos. Sintaxe de classe em Java

Tutorial 1 Configuração Apache Tomcat no NetBeans 8.0 (passo a passo)

Procedimentos para Atualização Sisloc

Chamada Remota de Procedimento (RPC)

TOTVS Utilização dos Aplicativos. Arquitetura e Instalação

Classes, Métodos e Propriedades

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Invocação de Métodos Remotos

Orientação a Objetos Classes Abstratas

Namespaces, Classes e Métodos.

Java RMI (parte I) Luís Lopes DCC-FCUP

SISTEMAS DISTRIBUÍDOS

Java RMI. Alcides Calsavara

REDES DE COMPUTADORES

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

HMI: UM MIDDLEWARE PARA OBJETOS DISTRIBUÍDOS SOBRE O PROTOCOLO HTTP

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

Sistemas Operacionais II

Protocolo Request-Reply

Comunicação Objetos Distribuídos e RMI

Pacotes Organizando suas classes e bibliotecas

Guia para o iniciante no Orthanc Para físicos-médicos, médicos e clínicos gerais.

Computação II Orientação a Objetos

MANUAL DE UTILIZAÇÃO DO CMA DESKTOP

Manual do Simond. Peter H. Grasch

Configurações para emissão de Nota Fiscal de Serviços de Salvador / BA.

Configurações para emissão de Nota Fiscal de Serviços de Osasco-SP.

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

PRÁTICA DE NAT/PROXY - LINUX 1. TOPOLOGIA DE REDE PARA TODOS OS CENÁRIOS DIFERENÇAS NO ROTEIRO EM RELAÇÃO A IMAGEM DO DVD

Programação Paralela OO. projeto ProActive www-sop.inria.fr/oasis/proactive/home.html

Herança Tiago Eugenio de Melo

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.

Figura 1: Formato de Requisição HTTP

Programação I Curso: Sistemas de Informação. Prof.: José Ronaldo Leles Júnior .:

Sistemas Distribuídos

Guia de Configuração Rápida da Rede

Redes de Computadores Da Teoria à Prática com Netkit

Biomac. Extensão para captura de. Mac Address e Biometria. Documentação. 20/09/2017 Sadi Peruzzo.

Firewall - Inspeção com estado. (Stateful Inspection)

Manual de Configuração.

Remote Method Invocation (RMI)

Sistemas Distribuídos

IBM SPSS Collaboration and Deployment Services (C&DS) versão 7

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar

Classes e Objetos. Prof. Leonardo Barreto Campos 1

Instrução de Trabalho: Instalar Client

SISTEMA DISTRIBUÍDO PARA GERENCIAMENTO DE LIBERAÇÃO DE RELEASES DE SOFTWARE

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Configurações para emissão de Nota Fiscal de Serviços de Curitiba / PR.

Configurações para emissão de Nota Fiscal de Serviços de João Pessoa / PB.

Introdução a Sistemas Abertos Configuração de Rede

OBJETOS DISTRIBUÍDOS E INVOCAÇÃO REMOTA

Instalação do MySQL e da ferramenta MySQL- Front

Formulários e favoritos

PROCEDIMENTO PARA ALTERAÇÃO HORÁRIO DE VERÃO MD COM LITE

Conceitos de Programação Orientada a Objetos

Exercício Programa Mini Web Server

Introdução ao Java. Prof. Herbert Rausch Fernandes

Gerenciamento de Redes Linux. Linux configuração de rede

Sistema de Atendimento Telefônico Automático. Manual do Usuário

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

MANUAL DE INSTALAÇÃO DA WIZARD - VIMET

Pacote de instalação dos componentes Selo Digital /SP

JavaTM RMI - Remote Method Invocation

A composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

Sistemas Distribuídos. Ricardo Ribeiro dos Santos

INFO3M ARQ REDES. Prova 1 Bimestre. Obs: Questões RASURADAS são consideradas como ERRADAS GABARITO

Título: SEFAZ RS Como configurar o sistema para importar os arquivos XML de NF-e através do Web Service diretamente do SEFAZ Certificado A1?

Configurações para acessar o Sadig pela Rede

Manual de Compilação/Execução da Aplicação SmartHome

Modificadores de Acesso JAVA

Guia de instalação do McAfee Web Gateway Cloud Service

INTRODUÇÃO. RPC x RMI

Guia de instalação. McAfee Web Gateway Cloud Service

Assina Web S_Line Manual de Uso

Cópia...5. Para fazer cópias...5. Interrupção do trabalho...6 Cancelamento de um trabalho de cópia...6. Envio de s...7

Guia Primeiros Passos da Bomgar B400

Configurações para emissão de Nota Fiscal de Serviços de Campinas / SP.

Linguagem de Programação III

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

Sistemas Distribuídos

Transcrição:

Implementação de um Sistema de Objetos Remoto baseado em Java RMI Ricardo Couto Antunes da Rocha INF/UFG

Declaração da Interface do Objeto Remoto Declaração de uma interface Java, com os métodos que são exportados pelo objeto remoto Interface deve estender a interface Remote Todos os métodos devem declarar que podem lançar a exceção RemoteException O método recebe como como parâmetro ou ou retorna algum algum objeto objeto de de classe definida pelo pelo programador? Se Se sim, sim, então então o programador deve deve refletir as as seguintes questões: 1. 1. Se Se deve deve ser ser transmitida uma uma cópia cópia do do objeto (passagem por por valor), então então o objeto objeto deve deve ser ser serializável (classe implementar a interface Serializable) 2.Se 2.Se deve deve ser ser transmitida uma uma referência para para o objeto objeto (passagem por por referência), então então o método deve deve aceitar/retorna uma uma interface remota e não não um um objeto. Observe que que quem quem transmite o objeto objeto deve deve fazê-lo adequadamente.

Implementação da Classe Servente e seus Métodos (1) A classe que implementa um objeto remoto, chamado objeto Servente, precisa implementar a interface remota criada anteriormente. A classe precisa estender a classe UnicastRemoteObject. Assim, a implementação herdada pela classe pai contém o código necessário para tornar o objeto ativo no middleware Java RMI. Na verdade, isso não é estritamente necessário. Caso a classe não herde de UnicastRemoteObject, o código do servidor deverá exportar o objeto no Java RMI, invocando o método UnicastRemoteObject.exportObject(...) Como a superclasse possui alguns construtores, a sua classe necessariamente deverá criar um construtor que invoca um dos construtores da classe UnicastRemoteObject

Implementação da Classe Servente e seus Métodos (2) É necessário implementar os métodos da classe servente. A priori, os métodos são implementados como qualquer método de classe, deixando totalmente transparente para o programador o fato do objeto ser remoto. O programador não deve lançar a exceção RemoteException. Ela será lançada pelo serviço de RMI, quando necessário. A exceção ocorre quando o método precisar retornar um objeto remoto. Neste caso, dependendo da implementação, o objeto precisará ser registrado no sistema de RMI. Não é necessário registrar o objeto no rmiregistry, pois a referência remota do objeto retornado será entregue diretamente de um objeto remoto invocado para o cliente.

Colocação do Serviço no Ar Para colocar o serviço no ar é necessário criar o objeto remoto propriamente dito Caso a classe estenda de UnicastRemoteObject, então o objeto já estará automaticamente ativo no serviço de RMI. Do contrário, deverá ser ativado explicitamente no serviço usando a chamada mencionada anteriormente. Por fim, o objeto precisa ser registrado no serviço rmiregistry, por meio de uma chamada bind.

Implementação da Classe Servente e seus Métodos (1) A classe que implementa um objeto remoto, chamado objeto Servente, precisa implementar a interface remota criada anteriormente. A classe precisa estender a classe UnicastRemoteObject. Assim, a implementação herdada pela classe pai contém o código necessário para tornar o objeto ativo no middleware Java RMI. Na verdade, isso não é estritamente necessário. Caso a classe não herde de UnicastRemoteObject, o código do servidor deverá exportar o objeto no Java RMI, invocando o método UnicastRemoteObject.exportObject(...) Como a superclasse possui alguns construtores, a sua classe necessariamente deverá criar um construtor que invoca um dos construtores da classe UnicastRemoteObject

Registro do Objeto Remoto no Registry Uma das informações mantidas na referência remota do objeto é o endereço IP da estação onde o objeto está. O endereço default utilizado pelo Java é o endereço localhost: 127.0.0.1. Este endereço não pode ser utilizado caso seja necessário o acesso de outras estações ao objeto remoto. Neste caso, é necessário atribuir à variável de ambiente da JVM java.rmi.server.hostname o endereço IP da estação.

Configuração do Codebase do Servidor (1) No código servidor ainda é necessário configurar o codebase do seu objeto remoto O codebase é uma URL na qual os clientes e o rmiregistry carregarão dinamicamente as classes do servidor à medida em que elas forem necessárias Para fazê-lo, basta configurar a variável de ambiente Java java.rmi.server.codebase para a respectiva URL Exemplo: http://192.168.7.14/meuservidor Então, é necessário iniciar o servidor codebase.

Configuração do Codebase do Servidor (2) Para a URL de exemplo http://192.168.7.14/meuservidor, precisaremos de um servidor de codebase que atenda aos seguinte requisitos Seja um servidor HTTP Esteja na máquina 192.168.7.14, que por sua vez deve ser a estação onde está o seu objeto remoto Todas as classes do seu servidor devem ser baixadas a partir da concatenação do seu caminho completo com a URL Neste caso, o seu servidor web deve estar de tal forma configurado, que a classe br.ufg.sd.aluno deve estar disponível na URL http://192.168.7.14/meuservidor/br/ufg/sd/aluno.class

Inicialização do Serviço RMIRegistry Se a configuração do servidor de codebase foi feita corretamente, então iniciar o serviço é trivial Digite rmiregistry na linha de comando Qualquer problema que ocorrer será causado por uma das seguintes causas Configuração incorreta do codebase Uso incorreto do bind/rebind ou uso de IP incorreto da estação com rmiregistry Bloqueio no acesso ao rmiregistry pelo firewall O diretório do rmiregistry (mesmo de todos os programas que vem com a instalação do Java) não está no PATH do seu SO.

Distribuição de Código para os Clientes Para desenvolver qualquer cliente para acessar o objeto remoto, você precisará incluir no CLASSPATH do programa os seguintes arquivos Java 1.A interface remota 2.Todas as classes (criadas por você) referenciadas na interface remota Você pode criar um.jar com essas classes e incluir no CLASSPATH do projeto que será criado.

Implementação do Cliente Se todos os passos anteriores forem realizados corretamente, iniciar um cliente é bem simples 1. Declare um objeto que referenciará a interface remota declarada 2. Obtenha uma referência para o serviço rmiregistry onde o objeto remoto foi registrado 3. Obtenha uma referência para o objeto remoto invocando o lookup do RMI Registry, passando como parâmetro o nome utilizado no registro do objeto. É possível que um cliente funcione ainda que você cometa erros na definição do codebase e no registro remoto, caso o seu cliente e servidor estejam na mesma estação e/ou no mesmo projeto Java ou CLASSPATH. Neste caso, para saber se tudo está correto, o ideal é criar um cliente em um projeto Java separado e preferencialmente em uma máquina diferente.