INF01018 Aula Prática 2 RMI Remote Method Invocation



Documentos relacionados
SISTEMAS DISTRIBUÍDOS

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

Invocação de Métodos Remotos

Capítulo V Sistemas de Objectos Distribuídos

Java RMI. Alcides Calsavara

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

Sistemas Distribuídos

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

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

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

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

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

Sistemas Distribuídos

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

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

Invocação de Métodos em Objectos Remotos

Invocação Remota MC704

Objetos Distribuídos. Nazareno Andrade

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. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação

UNIVERSIDADE. Sistemas Distribuídos

Middleware de Aplicações Paralelas/Distribuídas

Adriano Reine Bueno Rafael Barros Silva

Sistemas Distribuídos: Conceitos e Projeto Java RMI

APÊNDICE A EXEMPLO DE APLICAÇÃO

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)

Objetos Distribuídos em Java

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

Sistemas Distribuídos

RMI: Uma Visão Conceitual

Comunicação usando soquetes.

RMI/JNDI - Fundamentos

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes

Middleware. Camada Intermediária de Suporte a Sistemas Distribuídos

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

Java RMI Remote Method Invocation

RMI RMI-IIOP Java IDL (CORBA) Helder da Rocha

Licenciatura em Engenharia Informática PROVA DE TESTE PRÁTICO Sistemas Distribuídos I 2º Semestre, 2005/2006

UNIVERSIDADE. Sistemas Distribuídos

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

Sistemas Distribuídos RPC Remote Procedure Call

Java Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp

Programação Concorrente em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM

Remote Method Invocation (RMI)

EJB. Session Beans. J2EE (C. Geyer) Introdução a SessionBean 1

Java Básico. Matrícula de Alunos. Marco Antonio, Arquiteto de Software TJDF Novembro/2005

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

Aplicação da Arquitetura Multicamadas Utilizando Java. Raquel Schlickmann Orientador: Marcel Hugo

Java. Disciplina: Programação Modular Prof. Marco Túlio de Oliveira Valente

Programação Concorrente/Paralela em Java

Princípios de Sistemas Distribuídos. Tecnologias utilizadas em sistemas distribuídos Aula 5

Multithreading. Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC - Programação em Comunicações

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Aula 03-04: Modelos de Sistemas Distribuídos

JLANSCHOOL - APLICAÇÃO DA TECNOLOGIA JAVA RMI NO DESENVOLVIMENTO DE UM SOFTWARE DE GERÊNCIA DE LABORATÓRIO DE COMPUTADORES

Sistemas Distribuídos

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

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

insfcanceof new public switch transient while byte continue extends for int null

Acesso a Banco. Conexão em Java. Conexão em Java. Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel

PROCESSOS. Prof. Maicon A. Sartin

Java 2 Enterprise Edition RMI-IIOP e Enterprise JavaBeans

TUTORIAL JAVA AS - HTTP CLIENT COMPOSITION ENVIROMENT 7.1

J2EE. J2EE - Surgimento

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

OBJETOS DISTRIBUÍDOS E INVOCAÇÃO REMOTA

Criar uma aplicação JPA2 com EclipseLink e H2

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

Java : Comunicação Cliente-Servidor.

Invocação de Métodos em Objectos Remotos

UNIVERSIDADE. Sistemas Distribuídos

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Desenvolvimento de Aplicações Java/CORBA

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

INF01018 Aula Prática 1 Cliente-Servidor e Multicast

Enterprise Java Beans

Objetos distribuídos. Roteiro. Java IDL

Sistemas Distribuídos

Stateful Session Beans

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

Computação Paralela. Uma framework para aplicações concorrentes João Luís Ferreira Sobral Departamento do Informática Universidade do Minho

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame

Grupo I [7v] 1. [1,0] Apresente o conteúdo do IDL relativo a este programa. Assuma PROGRAM=62015 e VERSION=1.

Construção de novas Classes em Java. Classes Atributos Métodos Herança...

Transcrição:

1 / 18 INF01018 Aula Prática 2 RMI Remote Method Invocation Lucas Mello Schnorr, Alexandre Silva Caríssimi {lmschnorr,asc}@inf.ufrgs.br http://www.inf.ufrgs.br/ lmschnorr/ad/ INF01018 Sistemas Operacionais Distribuídos e de Redes Sala 102 Prédio 67 14 Setembro 2006

Roteiro 1 Relembrando a Parte Teórica 2 Levando a teoria para Java RMI 3 Projeto do Programa 4 Roteiro da Implementação 5 Detalhes Importantes 6 Execução da Aplicação 7 Referências 2 / 18

Relembrando a Parte Teórica Estrutura básica (Couloris) Proxy, Dispatcher, Stubs, Módulos de referência e de comunicação Marshalling Unmarshalling 3 / 18

Java RMI a partir da teoria 4 / 18

Projeto do Programa 5 / 18

Roteiro da Implementação Server 6 / 18 1 CalculatorInterface 2 CalculatorImpl 3 Criação dos Stubs e Proxy com auxílio de rmic 4 CalculatorServer

Passo 1 CalculatorInterface.java 7 / 18 0 public in terface C a l c u l a t o r I n t e r f a c e extends java. rmi. Remote { 1 public long add ( long a, long b ) 2 throws java. rmi. RemoteException ; 3 4 public long sub ( long a, long b ) 5 throws java. rmi. RemoteException ; 6 7 public long mul ( long a, long b ) 8 throws java. rmi. RemoteException ; 9 10 public long div ( long a, long b ) 11 throws java. rmi. RemoteException ; 12 }

Passo 2 CalculatorImpl.java 8 / 18 0 public class C a l c u l a t o r I m p l 1 extends java. rmi. server. UnicastRemoteObject 2 implements C a l c u l a t o r I n t e r f a c e { 3 4 public C a l c u l a t o r I m p l ( ) 5 throws java. rmi. RemoteException { 6 super ( ) ; 7 } 8 9 public long add ( long a, long b ) { 10 System. out. p r i n t l n ( a+ +b+ = +(a+b ) ) ; 11 return a + b ; 12 } 13 14 public long sub ( long a, long b ) { 15 System. out. p r i n t l n ( a+ +b+ = +(a b ) ) ; 16 return a b ; 17 } 18 /... mul e d i v... /

Passo 3 Stub e Proxy usando rmic javac CalculatorInterface.java javac CalculatorImpl.java rmic CalculatorImpl Será criado um arquivo CalculatorImpl Stub.class Utilização automática pelo RMI do Java Marshalling e Unmarshalling dos dados Utilizada na execução do servidor e do cliente 9 / 18

Passo 4 CalculatorServer.java 10 / 18 3 public class CalculatorServer { 4 public CalculatorServe r ( ) throws Exception { 5 / criacao do gerenciador de seguranca / 6 System. setsecuritymanager (new RMISecurityManager ( ) ) ; 7 8 / criacao do objeto C a l c u l a t o r I m p l / 9 C a l c u l a t o r I n t e r f a c e c a l c u l a t o r = new C a l c u l a t o r I m p l ( ) ; 10 11 / associacao desse objeto a um nome / 12 java. rmi. Naming. rebind 13 ( rmi : / / carpa. i n f. u f r g s. br :1099/ C a l c u l a t o r S e r v i c e, 14 c a l c u l a t o r ) ; 15 } 16 17 public s t a t i c void main ( S t r i n g args [ ] ) throws Exception{ 18 new CalculatorServ er ( ) ; 19 } 20 }

Roteiro da Implementação Client 11 / 18 1 CalculatorClient

Passo 1 CalculatorClient.java 12 / 18 6 7 public class C a l c u l a t o r C l i e n t { 8 public s t a t i c void main ( S t r i n g [ ] args ) throws Exception { 9 System. setsecuritymanager (new RMISecurityManager ( ) ) ; 10 C a l c u l a t o r I n t e r f a c e c ; 11 12 / encontrar o objeto remoto a p a r t i r do nome / 13 c = ( C a l c u l a t o r I n t e r f a c e ) 14 Naming. lookup 15 ( rmi : / / carpa. i n f. u f r g s. br / C a l c u l a t o r S e r v i c e ) ; 16 17 / chamada de metodos do objeto remoto / 18 System. out. p r i n t l n ( c. sub ( 4, 3 ) ) ; 19 System. out. p r i n t l n ( c. add ( 4, 5 ) ) ; 20 System. out. p r i n t l n ( c. mul ( 3, 6 ) ) ; 21 System. out. p r i n t l n ( c. div ( 9, 3 ) ) ;

Detalhes Importantes Execução do cliente sem o Proxy 13 / 18 Execução do cliente sem o Proxy schnorr@hurricane: /client$ java CalculatorClient RemoteException java.rmi.unmarshalexception: error unmarshalling return; nested exception is: java.lang.classnotfoundexception: CalculatorImpl Stub schnorr@hurricane: /client$

Detalhes Importantes Execução do cliente sem o Proxy Como o cliente encontra o Proxy (CalculatorImpl Stub.class) Copiar o arquivo da classe para o diretório onde o cliente será executado Especificar a localização da classe para a máquina virtual no momento da execução do cliente Propriedades do Java (Java Properties) java.rmi.server.codebase=localizacao DA CLASSE A localização pode ser: endereço (http://www.inf.ufrgs.br/ lmschnorr/ad/classes/) diretório (file:///home/usuarios/nomedousuario/classes/) entre outros Para usar: java -Djava.rmi.server.codebase=http://www/ lmschnorr/ad/classes/ CalculatorClient 14 / 18

Detalhes Importantes Execução do cliente sem segurança 15 / 18 Execução do cliente sem segurança schnorr@hurricane: /client$ java CalculatorClient Exception in thread main java.security.accesscontrolexception: access denied (java.net.socketpermission carpa.inf.ufrgs.br resolve) schnorr@hurricane: /client$

Detalhes Importantes Execução do cliente sem segurança 16 / 18 8 public s t a t i c void main ( S t r i n g [ ] args ) throws Exception { 9 System. setsecuritymanager (new RMISecurityManager ( ) ) ; A classe RMISecurityManager precisa de um arquivo com políticas de segurança para a máquina virtual Arquivo texto java.policy 0 grant { 1 permission java. net. SocketPermission :1024 65535, connect, acce 2 permission java. net. SocketPermission :80, connect ; 3 } ; Propriedades do Java (Java Properties) java -Djava.security.policy=java.policy CalculatorClient

Execução da Aplicação 17 / 18 Execução utilizando os terminals

Referências 18 / 18 jguru: Remote Method Invocation (RMI) http://java.sun.com/developer/onlinetraining/rmi/rmi.html Dynamic code downloading using RMI http://java.sun.com/j2se/1.4.2/docs/guide/rmi/codebase.html Java Remote Method Invocation: - Contents http://java.sun.com/j2se/1.4.2/docs/guide/rmi/spec/rmitoc.html Package java.rmi Descrição das classes e métodos http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/package-summary.html The Java Tutorials Trail: RMI: Table of Contents http://java.sun.com/docs/books/tutorial/rmi/toc.html