Tutorial RMI (Remote Method Invocation) por Alabê Duarte



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

SISTEMAS DISTRIBUÍDOS

Invocação de Métodos Remotos

Sistemas Distribuídos

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

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

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

Sistemas Distribuídos Métodos de Invocação Remota IV. 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

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

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

Sistemas Distribuídos

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

Java RMI. Alcides Calsavara

Criando sua primeira aplicação JAVA com o Eclipse

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

APÊNDICE A EXEMPLO DE APLICAÇÃO

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

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

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

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)

Instalando e configurando o Java Development Kit (JDK)

Adriano Reine Bueno Rafael Barros Silva

Configurar o Furbot no Eclipse

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

Invocação Remota MC704

Um pouco do Java. Prof. Eduardo

Prática em Laboratório N.02 Criando um serviço Web via NetBeans

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Persistência de Classes em Tabelas de Banco de Dados

Tutorial: Criando aplicações J2EE com Eclipse e jboss-ide

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

Procedimentos para Reinstalação do Sisloc

Procedimentos para Configuração do Ambiente J2EE e J2SE em Ambiente Windows

Desenvolvimento de Aplicações Java/CORBA

Tutorial 1.0. Instalação

Passos para a configuração do ambiente de desenvolvimento:

PHP Material de aula prof. Toninho (8º Ano)

Manual de Instalação de SQL Server (2005, 2008, 2012).

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Tutorial de instalação do Java 7 no Windows 7.

Java para Desktop. Introdução à Plataforma Java JSE

Manual de instalação e configuração da Ferramenta Android SDK

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

Acesso a banco de dados

Hyper-V e Intel HAXM. Ativando a virtualização

Tutorial de Computação Introdução a Programação Gráfica em Java para MEC1100 v

CURSO DE PROGRAMAÇÃO EM JAVA

Instalação do Java SDK (Software Development Kit)

Aprenda como instalar o plugin EclipseUML no Eclipse e como utilizá-lo para fazer engenharia reversa de seu código-fonte.

Manipulação de Banco de Dados com Java 1. Objetivos

ANDROID APPLICATION PROJECT

Atualizaça o do Maker

Programação online em Java

RevISTa: Publicação técnico-científica do IST-Rio. nº 05 Data: Dezembro / 2012 ISSN

Instalando o J2SE 5.0 JDK no Windows 2000/XP

SCPIWeb. SCPIWebDespRec Aplicação Web para Consulta de Despesas e Receitas ( Lei Complementar nº 131 de 27 Maio de 2009 )

Prática em Laboratório N.01 Criando um Serviço Web via Console

PJCUS-361 CONTRATO COM CÓDIGO DE BARRAS

Manual do Assinador de Documentos

Instalando servidor Apache com MySQL e as linguagens ColdFusion e PHP. XAMPP (xampp-win installer.exe), veja aqui.

Drive MySql de conexão para Eclipse

Instalando o Internet Information Services no Windows XP

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES

Nome N Série: Ferramentas

GUIA INTEGRA SERVICES E STATUS MONITOR

Introdução ao Android. Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ

Java com Banco de Dados Posgree

Procedimentos para Instalação do Sisloc

INSTALANDO E CONFIGURANDO O MY SQL

Técnico em informática ti 54 Configuração de serviços de rede no Windows 2003 server Ser ver Enterprise

INF01018 Aula Prática 2 RMI Remote Method Invocation

Manual de Instalação da Ferramenta Selenium para Apoiar o Processo de Teste Freetest

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

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

RMI/JNDI - Fundamentos

INTRODUÇÃO 12. DOCUMENTAÇÃO INTRODUÇÃO INTRODUÇÃO

Tutorial: Serviços web e suas composições

AVG Admin 2012 SQL Server 2005 Express

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

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - MILLENNIUM

Revisão: - 1 Desinstalando Versões Anteriores

Passo a Passo da instalação da VPN

Manual de Instalação do Agente Citsmart

Capítulo V Sistemas de Objectos Distribuídos

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - SLIM

PRINCÍPIOS DE INFORMÁTICA PRÁTICA OBJETIVO 2. BASE TEÓRICA 3. SEQÜÊNCIA DA AULA. 3.1 Iniciando o PowerPoint

Instalando o WordPress em localhost

BlackBerry Messenger SDK

Roteiro de instalação da Linha DD

Usando o Google Code como repositório para projetos no Eclipse com SubClipse.

Objetivos: Entender o funcionamento dos programas Java via linha de comando

Como atualizar os preços da ABCFarma.

Transcrição:

Tutorial RMI (Remote Method Invocation) por Alabê Duarte Este tutorial explica basicamente como se implementa a API chamada RMI (Remote Method Invocation). O RMI nada mais é que a Invocação de Métodos Remotamente, ou seja, permite a execução de chamadas remotas em aplicações desenvolvidas na linguagem Java. A maior parte deste tutorial é dedicada a Thiago Rodrigues e a Victor Reyes, ambos estudantes da Faculdade Ruy Barbosa Salvador BA, pois foram de grande ajuda no estudo desta API. Para que isso seja possível, é necessária a instalação de algumas ferramentas e é preciso também que alguns procedimentos sejam seguidos. As ferramentas necessárias pra começar a desenvolver são: Eclipse 3.2 e JDK 6.0. É necessário o Eclipse com o plugin Web Tools Platform(WTP). Existe uma versão do eclipse que já vem com o plugin incluso (1.5.3 ) e esta descrito como WebTools Platform All-in-one. Esta pode ser baixada neste endereço: http://download.eclipse.org/webtools/downloads Após o download, pra instalar basta descompactar no diretório de preferência. O JDK 6.0 pode ser baixado no endereço: http://java.sun.com/javase/downloads/index.jsp É recomendável que desinstale as versões anteriores antes de executar o eclipse ou mudar as variáveis de ambiente para tornar esta versão padrão. Após as configurações necessarias, vamos à implementação. O desenvolvimento foi feito em duas máquinas, mas nada impede que seja feita em apenas uma máquina para testar o seu funcionamento. Porém, simularemos uma aplicação Hello World feita em duas máquinas. Inicialmente, criaremos um projeto Java comum (J2SE) compostos por um pacote chamado servidor. Dentro deste pacote haverá: ServidorRMI.java (código java que é a chave da aplicação distribuída.) Mensagem.java (interface que será implementada pela classe onde haverá o metodo a ser chamado remotamente.) MensagemImpl.java (implementação da interface Mensagem.java)

Na outra máquina criaremos um projeto Java comum (J2SE) composto por um pacote chamado cliente. Dentro deste pacote haverá: Cliente.java (código que acessará o servidor remotamente que será mostrado mais tarde.) Segue abaixo o código: Mensagem.java package servidor; import java.rmi.remote; import java.rmi.remoteexception; public interface Mensagem extends Remote { public String mostramensagem() throws RemoteException; Segue abaixo o código: MensagemImpl.java package servidor; import java.rmi.remoteexception; import java.rmi.server.unicastremoteobject; public class MensagemImpl extends UnicastRemoteObject implements Mensagem { // precisamos definir um construtor pois o default não // gera RemoteException protected MensagemImpl() throws RemoteException { // opcional, vai ser chamado mesmo que não // o coloquemos aqui super(); public String mostramensagem() throws RemoteException { return "RMI, EU CONSEGUI!";

Segue abaixo o código: ServidorRMI.java (classe que será acessada remotamente por Client.java) package servidor; import java.rmi.remoteexception; import java.rmi.registry.locateregistry; import java.rmi.registry.registry; public class ServidorRMI { public static void main(string[] args) throws RemoteException { int port = 1099; //número-padrão da porta para o rmiregistry. try { //registra a porta LocateRegistry.createRegistry( port ); catch ( Exception e1 ) { //Criação do gerenciador de segurança (Security Manager) if ( System.getSecurityManager() == null ) System.setSecurityManager(new SecurityManager()); try { String name = "MensagemServer"; // aqui criamos o objeto que sera acessado // remotamente MensagemImpl m = new MensagemImpl(); Registry registry = LocateRegistry.getRegistry( port ); // aqui registramos o objeto 'm' como 'name' // no servidor registry.rebind(name, m); System.out.println( " Servidor RMI Rodando... "); catch (Exception e) { System.err.println("exceção RMI:"); e.printstacktrace();

Gerando classes Stub e Skeleton: Compilaremos nossas classes normalmente e após isso compilaremos a classe de implementação utilizando o rmic para gerar os Stubs* e Skeletons. * Stub é um espécie de proxy que ficará junto com a aplicação cliente e permitirá o acesso aos objetos que estão no servidor RMI. Primeiramente, dirija-se ao pacote onde está localizado o servidor e a classe que contém o(s) método(s) será/serão acessada(s) remotamente. Crie um documento de texto e escreva o seguinte: rem @echo off Echo Compilando rmic -v1.1 -d C:\workspace\ExemploRMI\ -classpath C:\workspace\ExemploRMI servidor.mensagemimpl pause Agora clique em Salvar como... e mude a extensão do arquivo de.txt para.bat. Note que o diretório C:\workspace\ExemploRMI\ foi o diretório escolhido para a criação do projeto. É preciso muita atenção na edição deste arquivo.bat. Coloque o diretório correspondente ao projeto que você, litor, está desenvolvendo. Pronto, agora é só clicar no arquivo.bat criado para gerar automaticamente os arquivos: MensagemImpl_Stub.class MensagemImpl_Skel.class Iniciando o Servidor: Antes de iniciarmos o servidor, precisaremos também de um arquivo de policy para especificar os privilérios de acesso ao servidor. Crie um arquivo com o código abaixo e salve-o com o nome de "policy" no diretório do projeto: grant{ permission java.security.allpermission; ; No nosso caso, chamaremos este arquivo policy de rmi.policy. Agora poderemos iniciar nosso servidor. Para tanto executaremos a seguinte instrução, a partir do diretório onde estão os fontes, na linha de comando: -Djava.security.policy=rmi.policy Essa instrução será dada da seguinte forma: Dentro do eclipse, dirija-se à classe ServidorRMI, clique com o botão direito do mouse e clique na opção Run As/Run... como mostra a figura abaixo:

Após o clique, selecione a classe ServidorRMI (se não aparecer clique com o botão direito, aperte new e selecione a sua classe.) clique na aba Arfuments e digite a instrução de segurança.

Feito isto, é só clicar em Run e ficar atento ao console do eclipse. A mensagem esperada é: Servidor RMI Rodando... Vamos agora criar um arquivo.bat para o servidor. Crie um documento de texto e escreva o seguinte comando: rem @echo off Echo servidor java -classpath C:\workspace\ExemploRMI\ -Djava.security.policy=rmi.policy servidor.servidorrmi pause Agora salve o documento de texto como um arquivo.bat no diretório correspondente a ExemploRMI. Note que o arquivo rmi.policy também deve estar neste diretório. Pronto, criamos um servidor com sucesso. Próximo passo agora é desenvolver o cliente. Para isso, falta apenas um pequeno detalhe. Exemplo.jar: Para começarmos a construir o cliente, teremos que compactar o projeto ExemploRMI na extensão.jar. Uma maneira bastante fácil de fazer isto é dirigir-se ao diretório ExemploRMI, selecione todos os arquivos e pastas, e a partir deles, crie uma compactação da extensão.zip e renomeie para.jar. Após a compactação, dirija-se ao projeto do cliente e diretamente do eclipse faça a importação do.jar (no nosso caso o arquivo foi nomeado de Servidor.jar) criado clicando no projeto ExemploRMICliente em propriedades/java Build Path/Add External JARs... conforme a figura abaixo: Após o processo, escreva o código do cliente. Segue abaixo o código: Cliente.java

package cliente; import java.rmi.connectexception; import java.rmi.naming; import servidor.*; public class Cliente { private static String port = "1099"; public static void main(string[] args) { /* objeto "mensagem" é o identificador que iremos * utilizar para fazer * referencia ao objeto remoto que será implementado */ Mensagem mensagem = null; // ip da máquina do servidor: 10.0.5.124 String ipconfig = "rmi://10.0.5.124:" + port + "/"; String retorno = null; try { /* - o lookup carrega o MensagemImpl_Stub do * CLASSPATH 10.0.5.124 - * é o IP da máquina de onde o servidor está * rodando. * "MensagemServer" é o nome que utilizamos para * fazer referencia ao * objeto no servidor. */ // aqui instanciamos o objeto remoto mensagem = (Mensagem) Naming.lookup(ipConfig + "MensagemServer"); // agora executamos o metodo "mostramensagem" no // objeto remoto retorno = mensagem.mostramensagem(); System.out.println(retorno); catch (ConnectException e) { System.out.println("ERRO: Servidor Desconectado"); //e.printstacktrace(); catch (Exception e) { System.out.println("Erro Interno"); //e.printstacktrace();

Pronto, agora é só rodar a aplicação Java e verá a seguinte mensagem: Hello World Agora certamente o leitor deve ser capaz de criar a sua própria aplicação RMI com sistemas distribuídos. Este tutorial foi desenvolvido por Alabê Duarte, estudante da Faculdade Ruy Barbosa.