RMI Java Remote Method Invocation em Java. Introdução Java Remote Method Invocation (Java RMI) permite desenvolver sistemas distribuídos baseados em Java.

Slides:



Advertisements
Apresentações semelhantes
|Introdução a Java para programadores Telis. Jogo de Dados simples O jogo é jogado por dois jogadores. Cada jogador faz sua jogada (lança um dado), e.
Advertisements

Projeto e Implementação de Middleware
Sistemas Operacionais II N Aula prática Java Sockets, RPC e RMI Eduardo Bezerra.
Java Remote Method Invocation Java RMI
Sistemas distribuídos
Sockets Marco Antonio – marcoreis.net Arquiteto de Software Dezembro/2007.
Marco A. S. Reis EJB Acesso Remoto Marco A. S. Reis
Programa de Pós-Graduação Lato Sensu MBA em Gestão de Software
Java RMI Alcides Calsavara. Objetivos Permitir que um método de uma classe Java em execução em uma máquina virtual JVM chame um método de um objeto (instância.
Java RMI Alcides Calsavara. Objetivos Permitir que um método de uma classe Java em execução em uma máquina virtual JVM chame um método de um objeto (instância.
Singleton.
Invocação de Métodos Remotos RMI
1 Arquitetura CORBA Repositório de Implementação Repositório de Interface cliente programa cliente proxy ORB Core ou invocação dinâmica servidor ORB Core.
PROGRAMAÇÃO DISTRIBUÍDA EM JAVA Verão/2001
JAVA ENUMS © 2009 by Jorge L. de Souza Leão março de 2009 PEE - COPPE/UFRJ.
Classes e objetos P. O. O. Prof. Grace.
Estrutura de Dados em Java
CRIANDO OBJETOS EM JAVA
JAVA: Conceitos Iniciais
Classes, Objetos e Encapsulamento
Concorrência em Java Threads em Java.
Introdução a linguagem Python
Programação Orientada a Objetos com Java
Padrão de Projeto Visitor
JAVA Linguagem Ambiente de Desenvolvimento
Arquitetura CORBA e Objetos Distribuídos
Chamada Remota de Procedimentos
Desenvolvimento de Aplicações CORBA
Sistemas Distribuídos Carlos A. G. Ferraz DI/UFPE Aula 07.
Remote Method Invocation RMI
Concorrência e Java RMI
Objetos Distribuídos Nazareno Andrade.
T. D. S. I. PARA WEB Prof. Emmanuel Nolêto. Java RMI.
Afinal, o que é um SD? Ospróximospróximosslidesdeverãoserserexecutadosum servidor,executadosum servidor, continuamente para criarmos um cliente e ambos.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Linguagem II Exceções.
RMI x C# Remote Emilena Specht – 1113/01/9 2004/01
Tratamento de Exceções
Java RMI João Gabriel (jggxm).
RMI - JAVA.
Java Kickstart, day 2 Semelhanças com linguagem C.
Prof.: Bruno Rafael de Oliveira Rodrigues. Construtor é bloco declarado que é chamado no momento em que o Objeto é criado (instanciado). Todas as classes.
Implementação Orientada a Objetos – Aula 05 Construtores e sobrecarga de métodos Prof. Danielle Martin Universidade de Mogi das Cruzes
Polimorfismo.
Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.
1 Marcio de Carvalho Victorino JAVA. 2 Declaração de Atributos [ ] [transient] [volatile] [static] [final] ; controle de acesso –public, package (default),
Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB.
Herança e Arquitetura em camadas
RMI (Remote Method Invocation) Bruno Edson Plínio Tadeu
RMI Objetos Distribuídos Luiz C. D´oleron SCJP
APLICAÇÃO J2EE – EXEMPLO PRÁTICO Guilherme Amaral Avelino.
Java – Remote Method Invocation (RMI)
Chamada Remota de Procedimentos. Remote Procedure Call O fluxo de informações em uma implementação de clientes e servidores por passagem de mensagem requer.
JR: Flexible Distributed Programming in an Extended Java Elmário Gomes Dutra Jr. Gustavo Romano.
Paulo Borba Centro de Informática Universidade Federal de Pernambuco Exceções.
Conceitos do Cliente Funcionamento Básico do Cliente Como Clientes acessam e usam Objetos Distribúidos.
RMI Remote Method Invocation
Sistemas Distribuídos Aula 07 – Programação Distribuída (Corba)
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Sistemas Distribuídos Prof. Marcus Rodrigues
Fundamentos de EJB Componentes do framework Ricardo Cavalcanti Jobson Ronan
Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.
SOCKET - É um canal de comunicação entre processos que estabelece uma conexão entre eles na forma de cliente-servidor. Por meio de sockets, os computadores.
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
ProgramaçãoConcorrente Glêdson Elias
UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Ciência da Computação 2o. Semestre / 2006 Prof. Fábio M. Costa
Programação em Java RMI - Remote Method Invocation Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores.
Remote Method Invocation
Transcrição da apresentação:

RMI Java Remote Method Invocation em Java

Introdução Java Remote Method Invocation (Java RMI) permite desenvolver sistemas distribuídos baseados em Java. RMI usa serialização de objetos para encapsular e desencapsular parâmetros suportando polimorfismo.

Interface Remota Um objeto remoto é uma instância de uma classe que implementa uma interface remota. A interface remota declara cada um dos métodos que podem ser chamados remotamente. A interface remota dever ser declarada como “public”. Ela deve extender a interface “java.rmi.Remote”. Cada método deve declarar “java.rmi.RemoteException” na sua cláusula “throws”. O tipo de dado de qualquer objeto remoto que é passado como um argumento ou retornado deve ser declarado.

Exemplo: package examples.hello; import java.rmi.Remote; import java.rmi.RemoteException; public interface Hello extends Remote { String sayHello() throws RemoteException; }

Objeto Remoto Declara que implementa uma interface remota. Implementação de seu construtor. Implementação do método que pode ser chamado remotamente. Uma classe “servidor”, que tem um método principal que cria uma instância do objeto remoto e que registra o objeto no serviço de nomes “rmiregistry”. A classe que implementa o método main pode ser a própria classe do objeto.

Implementando uma Interface Remota A classe promete que irá prover o corpo dos métodos para cada um das assinaturas declaradas na interface. Os métodos são publicos ou abstratos. Exemplo de uma declaração: public class HelloImpl extends UnicastRemoteObject implements Hello {

Definir um construtor Mesmas funções de um construtor normal; Exportação do objeto: UnicastRemoteObject.exportObject a partir do construtor da classe; Construtor  throws “remoteException

Exemplo public HelloImpl() throws RemoteException { super(); } O método super invoca o construtor de java.rmi.server.UnicastRemoteObject, que exporta o objeto remoto. O construtor usa java.rmi.RemoteException, pois pode ocorrer uma falha durante a exportação do objeto.

Prover implementação métodos Todos os métodos que constam na Interface remota devem ser implementados: public String sayHello() throws RemoteException { return "Hello World!"; } Obs: java.io.Serializable

O gerenciador de segurança O “servidor” deverá instalar um geranciador de segurança: if (System.getSecurityManager() == null) { System.setSecurityManager(new RMISecurityManager()); } Garante que as classes carregadas não vão realizar operações indesejadas.

Criando instâncias do objeto remoto HelloImpl obj = new HelloImpl(); Depois de criado ele está pronto para receber chamadas remotas.

Registrar o objeto Para puder utilizar um objeto remoto o cliente deverá obter sua referência RMI prover um “Registry” que permite publicar o objeto através de um endereço no formato "//host/objectname“ (serviço de nomes) Exemplo: Naming.rebind("//myhost/HelloServer", obj);

Exemplo Servidor package examples.hello; import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.RMISecurityManager; import java.rmi.server.UnicastRemoteObject; public class HelloImpl extends UnicastRemoteObject implements Hello { public HelloImpl() throws RemoteException { super(); } public String sayHello() { return "Hello World!"; }

Exemplo Servidor (continuação) public static void main(String args[]) { // Create and install a security manager if (System.getSecurityManager() == null) { System.setSecurityManager(new RMISecurityManager()); } try { HelloImpl obj = new HelloImpl(); // Bind this object instance to the name "HelloServer" Naming.rebind("//myhost/HelloServer", obj); System.out.println("HelloServer bound in registry"); } catch (Exception e) { System.out.println("HelloImpl err: " + e.getMessage()); e.printStackTrace(); }

Localizando o objeto O cliente utiliza o serviço provido pelo Registry para localizar o objeto. Exemplo: obj = (Hello) Naming.lookup("//hostname/HelloServer");

Exemplo de um cliente package examples.hello; import java.applet.Applet; import java.awt.Graphics; import java.rmi.Naming; import java.rmi.RemoteException; public class HelloApplet extends Applet { String message = "blank"; Hello obj = null; public void init() { try { obj = (Hello)Naming.lookup("//" + getCodeBase().getHost() + "/HelloServer"); message = obj.sayHello(); } catch (Exception e) { System.out.println("HelloApplet exception: " + e.getMessage()); e.printStackTrace(); } public void paint(Graphics g) { g.drawString(message, 25, 50); }

Compilar as classes Verificar CLASSPATH Compilar os códigos fontes: javac -d $HOME/public_html/myclasses Hello.java HelloImpl.java HelloApplet.java

Gerando Stubs e Skeletons Rmic – cria os stubs e os skeletons. Cria arquivos de classes nos formatos: MyImpl_Skel.class MyImpl_Stub.class Exemplo: rmic -d $HOME/public_html/myclasses examples.hello.HelloImpl -d indica o diretório raiz das classes

Iniciando o “registry” rmiregistry & start rmiregistry start rmiregistry 2001

Iniciando o Servidor java -Djava.rmi.server.codebase= -Djava.security.policy=$HOME/mysrc/policy examples.hello.HelloImpl Onde: - Djava.rmi.server.codebase= myhost/~myusrname/myclasse s/ - determina a localização dos stubs e skeletons -Djava.security.policy=$HOME/mysrc/policy – fornece a localização do arquivo com a política de segurança

Atividade Elaborar no laboratório um Servidor simples e um Cliente utilizando o RMI Java como suporte para a comunicação: de/rmi/index.html de/rmi/index.html

FIM