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

Tamanho: px
Começar a partir da página:

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

Transcrição

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

2 Autores Autoria Cláudio Geyer Marcelo Castiglia Pereira Local Instituto de Informática UFRGS disciplinas: Programação Distribuída e Paralela (CIC e ECP) Programação com Objetos Distribuídos Versão atual V12.1 Mar/2013 Programação com Objetos Distribuídos (C. Geyer) Java-RMI 2

3 Súmula Súmula conceitos básicos de RMI lado servidor lado cliente exemplo Hello roteiro de desenvolvimento segurança pacote RMI Programação com Objetos Distribuídos (C. Geyer) Java-RMI 3

4 Bibliografia Bibliografia documentação JDK API geral: versão 7 (março 2012) RMI: -> pacotes e classes RMI Programação com Objetos Distribuídos (C. Geyer) Java-RMI 4

5 Bibliografia Bibliografia documentação JDK versão index.html => rmi/index.html inclui 3 tutoriais básico: programa Helllo World variações de socket objetos ativáveis Versão 7: Página não encontrada Programação com Objetos Distribuídos (C. Geyer) Java-RMI 5

6 Bibliografia Bibliografia tutorial Java da Sun Oracle: Exemplo mais complexo: servidor de execução index.html Exemplo Hello World Sun technotes/guides/rmi/hello/hello-world.html index.html em geral, esses endereços são independentes de versão Programação com Objetos Distribuídos (C. Geyer) Java-RMI 6

7 Bibliografia Bibliografia Farley, J. Distributed Java Curso Java RMI do jguru Orfali, R. et alli. Client/Server Programming with Java and Corba. 2 edition, Wiley, Cap RMI versus CORBA/Java ORBs Programação com Objetos Distribuídos (C. Geyer) Java-RMI 7

8 Conceitos Básicos Programação com Objetos Distribuídos (C. Geyer) Java-RMI 8

9 Conceitos Básicos Conceitos básicos RMI - Remote Method Invocation chamada remota de método função/objetivo mecanismo que permite a chamada de métodos de objetos remotos (distribuídos) Programação com Objetos Distribuídos (C. Geyer) Java-RMI 9

10 Conceitos Básicos Conceitos básicos (cont.) Segue modelo cliente / servidor Aplicação RMI usualmente composta por 2 programas Cliente Servidor Programação com Objetos Distribuídos (C. Geyer) Java-RMI 10

11 Conceitos Básicos Conceitos básicos (cont.) Servidor típico Cria objetos remotos (RMI) Torna as referências desses objetos acessíveis aos clientes Espera por chamadas dos clientes Cliente típico Obtém referência a um (1) ou mais objetos remotos Realiza chamadas aos objetos remotos Programação com Objetos Distribuídos (C. Geyer) Java-RMI 11

12 Conceitos Básicos Arquitetura típica de RMI Programação com Objetos Distribuídos (C. Geyer) Java-RMI 12

13 Conceitos Básicos Conceitos básicos (cont.) oferecer comunicação entre objetos distribuídos de forma similar à comunicação entre objetos locais simplifica a programação de sistemas distribuídos características similares às de RPC (chamada remota de procedure) Programação com Objetos Distribuídos (C. Geyer) Java-RMI 13

14 Conceitos Básicos Conceitos básicos (cont.) tratamento automático/implícito da heterogeneidade entre máquinas cliente/servidor comunicação bidirecional argumentos de entrada valor de retorno comunicação síncrona chamador (cliente, emissor) fica bloqueado até retorno (void inclusive) do chamado (servidor, receptor) Programação com Objetos Distribuídos (C. Geyer) Java-RMI 14

15 Conceitos Básicos Outras características permite passagem de objetos carga automática de classes (programas) Permite mudança dinâmica do comportamento de programas Por exemplo, o cliente pode passar o código (classe) de um cálculo a ser realizado pelo servidor Ver exemplo no tutorial da Oracle Programação com Objetos Distribuídos (C. Geyer) Java-RMI 15

16 Conceitos Básicos Outras características atendimento multithreaded a chamadas concorrentes implica uso de sincronização conforme aplicação por exemplo, se os métodos acessam variáveis de instância em escrita -> exclusão mútua -> uso de synchronized Programação com Objetos Distribuídos (C. Geyer) Java-RMI 16

17 Conceitos Básicos Diferenças entre RPC e RMI RPC: chamada de uma procedure de um módulo/ processo o módulo/processo é implícito na chamada so há uma procedure com determinado nome no módulo registra-se a procedure e não o módulo procedure usa os dados (contexto) do módulo Programação com Objetos Distribuídos (C. Geyer) Java-RMI 17

18 Conceitos Básicos Diferenças entre RPC e RMI RMI: chamada de um método de um objeto o objeto é explícito na chamada vários objetos podem ter o mesmo método objetos tem dados (contexto) locais ou próprios registra-se objetos (e não os métodos) Programação com Objetos Distribuídos (C. Geyer) Java-RMI 18

19 Remote Method Invocation (RMI) Máquina Virtual Java #1 (Cliente) Máquina Virtual Java #2 (Servidor)... o.método () { }... chamada (... parâmetros...) retorna resultado objeto remoto método remoto () { } Programação com Objetos Distribuídos (C. Geyer) Java-RMI 19

20 Recursos Básicos Programação com Objetos Distribuídos (C. Geyer) Java-RMI 20

21 Recursos Básicos Recursos básicos localizar objetos remotos: obtenção de referências a objetos através de um servidor de nomes RMI: rmiregistry servidor registra seus objetos com nomes especiais cliente obtém referência a partir do nome especial Programação com Objetos Distribuídos (C. Geyer) Java-RMI 21

22 Recursos Básicos Recursos básicos comunicação entre objetos totalmente a cargo do RMI transparente ao programador similar à comunicação local quase... Programação com Objetos Distribuídos (C. Geyer) Java-RMI 22

23 Recursos Básicos Recursos básicos carga de classes de objetos passados pela rede tipos: argumentos, retorno, classe stub uso de servidores WEB protocolos HTTP, FTP,... Programação com Objetos Distribuídos (C. Geyer) Java-RMI 23

24 Comunicação entre os componentes Comunicação entre os componentes do sistema RMI RMI RMI Registry cliente RMI servidor Protocolo URL WEB server Protocolo URL WEB server Programação com Objetos Distribuídos (C. Geyer) Java-RMI 24

25 Passagem de Parâmetros e Resultados Passagem de Parâmetros e Resultados tipos primitivos por exemplo, int, boolean, double,... são passados por valor objetos remotos isto é, objetos que implementam a interface remota são passados como referências remotas apenas para permitir que o receptor possa chamar os métodos dos objetos remotos implicitamente na busca do servidor pelo cliente (inicialização) Programação com Objetos Distribuídos (C. Geyer) Java-RMI 25

26 Passagem de Parâmetros e Resultados Passagem de Parâmetros e Resultados (cont.) todos os outros objetos são serializados passados por valor isto é, uma cópia do objeto é transferida Programação com Objetos Distribuídos (C. Geyer) Java-RMI 26

27 Falhas Outras diferenças entre chamada local e remota diferentes tipos de falha podem ocorrer em um sistema distribuído afeta programação por exemplo, a falha pode atingir somente o servidor alguns métodos, como hashcode, equals, tostring, são sensíveis a contextos distribuídos Programação com Objetos Distribuídos (C. Geyer) Java-RMI 27

28 Camadas de Software do Sistema RMI caminho lógico Programa Cliente Programa Servidor Stub Camada de Referência Remota Camada de Transporte Internet Esqueleto Camada de Referência Remota Camada de Transporte Camadas de Software do Sistema RMI Programação com Objetos Distribuídos (C. Geyer) Java-RMI 28

29 Camadas de Software do Sistema RMI Camadas de software (implementação) Interface remota Stub Define os métodos de uma classe remota que podem ser chamados remotamente Classe derivada de uma classe remota (servidora) Implementa os métodos da interface remota Cliente faz a chamada ao stub Stub é responsável por redirecionar a chamada ao objeto remoto Cliente só pode chamar os métodos que estão na interface Programação com Objetos Distribuídos (C. Geyer) Java-RMI 29

30 Aspectos de Programação Programação com Objetos Distribuídos (C. Geyer) Java-RMI 30

31 Programação: servidor Aspectos básicos de programação O lado do servidor O lado cliente Exemplo Hello Passos para criação e execução Programação com Objetos Distribuídos (C. Geyer) Java-RMI 31

32 Programação: servidor Aspectos básicos de programação o lado do servidor uma interface remota uma classe que implementa a interface registro de objetos servidores no rmiregistry Programação com Objetos Distribuídos (C. Geyer) Java-RMI 32

33 Programação: servidor Aspectos básicos de programação o lado do servidor métodos remotos são especificados em uma interface remota que estende java.rmi.remote objetos servidores remotos são instâncias de classes que implementam a interface remota essas classes são definidas como subclasses de java.rmi.server.unicastremoteobj ect Programação com Objetos Distribuídos (C. Geyer) Java-RMI 33

34 O Lado do Servidor Aspectos básicos de programação o lado do servidor o programa servidor gerente (mestre) cria um (ao menos) um objeto remoto associa esse objeto a um nome simbólico e o adiciona ao rmiregistry o gerente pode ser a própria classe remota não recomendado em programas complexos Programação com Objetos Distribuídos (C. Geyer) Java-RMI 34

35 O Lado do Servidor Aspectos básicos de programação o lado do servidor métodos remotos e construtores de objetos remotos podem disparar RemoteExceptions elas devem ser declaradas e tratadas motivos: rede falha ou cai, máquinas do servidor ou do cliente sofrem um crash,... Programação com Objetos Distribuídos (C. Geyer) Java-RMI 35

36 Exemplo HelloWorld Aspectos básicos de programação exemplo aplicação HelloWorld em modo cliente/servidor servidor remoto um único método retorna um string Hello World cliente chama método acima Programação com Objetos Distribuídos (C. Geyer) Java-RMI 36

37 Exemplo hello: interface do servidor Exemplo Hello // todos os arqs em um pacote package hello; // importa pacote de classes RMI import java.rmi.remote; import java.rmi.remoteexception; // interface do objeto servidor public interface Hello extends Remote { // um único método sayhello public String sayhello()throws java.rmi.remoteexception; } Programação com Objetos Distribuídos (C. Geyer) Java-RMI 37

38 Exemplo Hello Exemplo hello: implementação do servidor package hello; import java.rmi.registry.registry; import java.rmi.registry.locateregistry; import java.rmi.remoteexception; import java.rmi.server.unicastremoteobject; // implementa a interface Hello // em versões anteriores era usual herdar da // classe RMI (UnicastRemoteObject) public class HelloImpl implements Hello { Programação com Objetos Distribuídos (C. Geyer) Java-RMI 38

39 Exemplo Hello Exemplo hello: implem. do servidor (cont.) // implementa o construtor public HelloImpl() throws RemoteException{ super(); // não obrigatório } // implementa o método sayhello public String sayhello() { return Hello, World! ; } Programação com Objetos Distribuídos (C. Geyer) Java-RMI 39

40 Exemplo Hello Exemplo hello: implem. do servidor (cont.) // método main da classe servidora // cria um objeto servidor Server obj = new Server(); // cria um objeto stub do servidor Hello stub = (Hello) UnicastRemoteObject.exportObject(obj, 0); // associa o objeto stub do servidor a um nome no // registry Registry registry = LocateRegistry.getRegistry(); registry.bind("hello", stub); System.err.println("Server ready"); Programação com Objetos Distribuídos (C. Geyer) Java-RMI 40

41 Exemplo Hello Exemplo hello: implem. do servidor (cont.) // método main da classe servidora } catch (Exception e) { System.err.println("Server exception: " + e.tostring()); e.printstacktrace(); } } } Programação com Objetos Distribuídos (C. Geyer) Java-RMI 41

42 Programação: cliente Aspectos básicos de programação o lado do cliente conhecimento da interface remota acesso à interface remota do servidor em tempo de compilação localização de um (ao menos) objeto servidor no rmiregistry conhecimento do nome associado ao objeto chamadas remotas Programação com Objetos Distribuídos (C. Geyer) Java-RMI 42

43 O Lado do Cliente Aspectos básicos de programação o lado do cliente um cliente que queira utilizar classes de um servidor remoto deve estabelecer um gerenciador de segurança por exemplo, RMISecurityManager o cliente referencia o objeto remoto usando seu nome simbólico para procurá-lo no registro Programação com Objetos Distribuídos (C. Geyer) Java-RMI 43

44 O Lado do Cliente Aspectos básicos de programação o lado do cliente agora, o cliente pode chamar métodos de um objeto remoto da mesma maneira que ele chama métodos de objetos locais o cliente deve tratar as RemoteExceptions dos métodos remotos Programação com Objetos Distribuídos (C. Geyer) Java-RMI 44

45 Implementação de um Cliente RMI Exemplo hello: implementação do cliente package hello; import java.rmi.*; public class HelloClient { public static void main (String args[]) { System.setSecurityManager (new RMISecurityManager()); Programação com Objetos Distribuídos (C. Geyer) Java-RMI 45

46 Implementação de um Cliente RMI // obtem referência ao registry // busca referência ao stub com nome do servidor // realiza chamada ao servidor String host = (args.length < 1)? null : args[0]; try { Registry registry = LocateRegistry.getRegistry(host); Hello stub = (Hello) registry.lookup("hello"); String response = stub.sayhello(); System.out.println("response: " + response); } catch (Exception e) { System.err.println("Client exception: " + e.tostring()); e.printstacktrace(); } } } Programação com Objetos Distribuídos (C. Geyer) Java-RMI 46

47 Passos do Uso de RMI Passos para gerar e executar uma aplicação RMI 1) Escreva arquivos Java para interface remota classe que implementa a interface remota (servidor) classe que chama o método remoto (cliente) 2) Compile os arquivos.java com javac Atualmente gera todas as classes necessárias à execução Programação com Objetos Distribuídos (C. Geyer) Java-RMI 47

48 Passos do Uso de RMI Passos para gerar e executar uma aplicação RMI 3) Gere stubs e skeletons com o compilador RMI rmic: a partir da versão 1.x (com certeza 1.5 e 1.6) o uso do rmic (abaixo~) não é mais necessário simplesmente compilar com javac rmic < classe que implementa a interface remota> cuidados em caso de package chamar o rmic do diretório pai do pacote: pai do hello indicar todo o caminho da classe: hello.helloimpl indicar o diretório para o stub e skeleton por - d. : diretório do package Programação com Objetos Distribuídos (C. Geyer) Java-RMI 48

49 Passos do Uso de RMI Passos para gerar e executar uma aplicação RMI 4) Torne as classes disponíveis na rede 5) Inicie o registry daemon na máquina remota: se Unix (Solaris) rmiregistry & se Windows 95/98: start rmiregistry Programação com Objetos Distribuídos (C. Geyer) Java-RMI 49

50 Passos do Uso de RMI Passos para gerar e executar uma aplicação RMI 6 ) Inicie o servidor na máquina remota se o RMISecurityManager foi criado, é preciso indicar a política de controle de segurança as opções de políticas (sintaxe e semântica) são bastante ricas (e complexas) política totalmente aberta (cuidado) para testes: conteúdo de arquivo policy grant { // Allow everything for now permission java.security.allpermission; }; Programação com Objetos Distribuídos (C. Geyer) Java-RMI 50

51 Passos do Uso de RMI Passos para gerar e executar uma aplicação RMI 6 ) Inicie o servidor na máquina remota (cont.) o interpretador Java tem muitas opções inclusive quanto à segurança variações conforme versão do JDK exemplo de chamada: java -Djava.security.policy= \myhome\mysources\policy hello.helloimpl o arquivo \myhome\mysources\policy contem a política Programação com Objetos Distribuídos (C. Geyer) Java-RMI 51

52 Passos do Uso de RMI Passos para gerar e executar uma aplicação RMI 7) Inicie o programa cliente na máquina cliente java hello.helloapp Programação com Objetos Distribuídos (C. Geyer) Java-RMI 52

53 Usando RMI Bootstrap do Cliente e RMI Cliente Servidor Hello Client lookup(): onde está Hello? onde está Registry Stub envia a referência (stub) aqui está o stub sayhello() Hello HelloImpl_Stub.class HelloImpl_Skel.class HelloImpl.class Programação com Objetos Distribuídos (C. Geyer) Java-RMI 53

54 Aspectos Adicionais Segurança, Integridade Referencial, Programação com Objetos Distribuídos (C. Geyer) Java-RMI 54

55 Segurança do RMI Segurança do RMI Um programa (normalmente o cliente) que queira utilizar classes de uma máquina remota deve estabelecer um gerenciador de segurança, por exemplo: System.setSecurityManager (new RMISecurityManager()); Programação com Objetos Distribuídos (C. Geyer) Java-RMI 55

56 Segurança do RMI Segurança do RMI O RMISecurityManager não permite que classes remotas (entre outras) utilizem novas classes manipulem threads saiam da Máquina Virtual Java Outros gerenciadores de segurança construção por extensão do RMISecurityManager exemplo: implementar autenticação de chaves públicas. Programação com Objetos Distribuídos (C. Geyer) Java-RMI 56

57 Outros Aspectos Integridade referencial quando duas (ou mais) referências ao mesmo objeto (não remoto) são passadas em uma mesma chamada remota na máquina receptora, elas apontarão para a mesma (única) cópia do objeto Se em chamadas distintas Dois objetos no destino Programação com Objetos Distribuídos (C. Geyer) Java-RMI 57

58 Outros Aspectos Semântica de chamada RPC cada chamada é executada somente uma vez se a chamada falha (rede, servidor), há certeza de que a chamada foi executada ou uma única vez ou nenhuma Programação com Objetos Distribuídos (C. Geyer) Java-RMI 58

59 Extensões a RMI Extensões a RMI diversos trabalhos acadêmicos correção de deficiências de RMI questões cache replicação assincronismo sincronização distribuída chamada local criação de objetos remotos Programação com Objetos Distribuídos (C. Geyer) Java-RMI 59

60 Extensões a RMI Extensões a RMI ver resumos em TrabalhosLeves1a2003s1 Página perdida Programação com Objetos Distribuídos (C. Geyer) Java-RMI 60

61 Contras Desvantagens de RMI Somente Java Pouco usado (ou ao menos poucos usos novos comerciais)? Futuro incerto? Desempenho Não web Evolução de WS Programação com Objetos Distribuídos (C. Geyer) Java-RMI 61

62 Resumo Resumo RMI permite cliente chamar métodos de objetos remotos em servidor Chamada de método (quase) usual Atendimento concorrente a múltiplas chamadas Carga automática de classes Obtenção de referências remotas por servidor de nomes Objetos argumentos passados por cópia Interface RMI Define métodos remotos Implementados por classe RMI Programação com Objetos Distribuídos (C. Geyer) Java-RMI 62

63 Pacote java.rmi Programação com Objetos Distribuídos (C. Geyer) Java-RMI 63

64 Pacote java.rmi Pacote java.rmi uso por clientes e servidores Classe Remote servidores com interface marcadora Classe Naming associação, desassociação e procura de objetos remotos Observação: Slides não atualizados desde versão 1.4 (?) Programação com Objetos Distribuídos (C. Geyer) Java-RMI 64

65 Pacote java.rmi Pacote java.rmi Classe RMISecurityManager testes de segurança em classes carregadas de máquinas remotas por exemplo, stubs de clientes Programação com Objetos Distribuídos (C. Geyer) Java-RMI 65

66 Pacote java.rmi Pacote java.rmi (cont.) Classe RemoteException estende java.lang.exception subclasses, por exemplo ConnectException AccessException NoSuchObjectException devem ser pegas num bloco catch ou declaradas em uma cláusula throws Programação com Objetos Distribuídos (C. Geyer) Java-RMI 66

67 Pacote java.rmi Pacote java.rmi.server necessitado por servidores apenas as classes mais importantes: RemoteObject estende java.lang.object métodos como equals(), tostring(), hashcode(), que fazem sentido para objetos remoto RemoteServer métodos para obter informações sobre clientes e para login Programação com Objetos Distribuídos (C. Geyer) Java-RMI 67

68 Pacote java.rmi Pacote java.rmi.server (cont.) as classes mais importantes: UnicastRemoteObject subclasse de RemoteServer vinda com o pacote usa sockets TCP para comunicação referências remotas não permanecem válidas após reinícios (falha - start) do servidor uma única cópia do objeto Programação com Objetos Distribuídos (C. Geyer) Java-RMI 68

69 Pacote java.rmi Pacote java.rmi.server Classe java.rmi.activation.activatable classe abstrata objetos remotos da classe são ativados somente quando chamados pode destruir-se quando achar conveniente Programação com Objetos Distribuídos (C. Geyer) Java-RMI 69

70 Interfaces de Registro Conceitos Um registro é um objeto remoto que mapeia nomes para objetos remotos. Um registro pode ser usado em uma máquina virtual com outras classes de servidores ou sozinho. Programação com Objetos Distribuídos (C. Geyer) Java-RMI 70

71 Interfaces de Registro Interfaces de Registro (cont.) para recuperação e registro de objetos através de um simples nome. Interface java.rmi.registry.registry classe java.rmi.registry.locateregistry Programação com Objetos Distribuídos (C. Geyer) Java-RMI 71

72 A interface Registry A interface Registry A interface java.rmi.registry.registry métodos para procura, associação, reassociação, desassociação e listagem do conteúdo de um registro. A classe java.rmi.naming usa a interface remota registry para o uso de nomes baseados em URL. Programação com Objetos Distribuídos (C. Geyer) Java-RMI 72

73 A interface Registry A interface Registry: package java.rmi.registry; public interface Registry extends java.rmi.remote { public static final int REGISTRY_PORT = 1099; public java.rmi.remote lookup(string name) throws java.rmi.remoteexception, java.rmi.notboundexception, java.rmi.accessexception; Programação com Objetos Distribuídos (C. Geyer) Java-RMI 73

74 A interface Registry public void bind(string name, java.rmi.remote obj) throws java.rmi.remoteexception, java.rmi.alreadyboundexception, java.rmi.accessexception; public void rebind(string name java.rmi.remote obj) throws java.rmi.remoteexception, java.rmi.accessexception; Programação com Objetos Distribuídos (C. Geyer) Java-RMI 74

75 A interface Registry public void unbind(string name) throws java.rmi.remoteexception, java.rmi.notboundexception, java.rmi.accessexception; } public String[] list() throws java.rmi.remoteexception, java.rmi.accessexception; Programação com Objetos Distribuídos (C. Geyer) Java-RMI 75

76 A interface Registry A interface Registry (cont.) REGISTRY_PORT é a porta default de registro lookup retorna o objeto remoto associado ao nome especificado o objeto remoto implementa um conjunto de interfaces remotas clientes podem juntar o objeto remoto à interface remota desejada. Programação com Objetos Distribuídos (C. Geyer) Java-RMI 76

77 A interface Registry A interface Registry (cont.) bind associa o nome ao objeto remoto obj. se o nome já está associado a um outro objeto, a exceção AlreadyBoundException é ativada. Rebind associa o nome ao objeto remoto obj. qualquer associação do nome feita anteriormente é descartada. Programação com Objetos Distribuídos (C. Geyer) Java-RMI 77

78 A interface Registry A interface Registry (cont.) unbind remove a associação entre o nome e o objeto remoto obj List Se o nome não está associado a nenhum objeto, a exceção NotBoundException é ativada. retorna um array de strings contendo uma lista dos nomes associados no registro. Programação com Objetos Distribuídos (C. Geyer) Java-RMI 78

79 A interface Registry A interface Registry (cont.) Clientes podem acessar o registro por interfaces LocateRegistry e Registry métodos da classe java.rmi.naming. Programação com Objetos Distribuídos (C. Geyer) Java-RMI 79

80 A interface Registry A interface Registry (cont.) Clientes X domínios bind, unbind e rebind apenas de clientes que estejam no mesmo domínio do servidor. Lookup pode ser feito de qualquer domínio. Programação com Objetos Distribuídos (C. Geyer) Java-RMI 80

81 A classe LocateRegistry A classe LocateRegistry java.rmi.registry.locateregistry métodos estáticos que retornam uma referência para o registro: no domínio atual numa porta específica do domínio atual num domínio específico numa determinada porta de um domínio específico Programação com Objetos Distribuídos (C. Geyer) Java-RMI 81

82 A classe LocateRegistry A classe LocateRegistry (cont.) createregistry cria e exporta um registro no domínio local na porta especificada. o registro implementa uma sintaxe de nome simples que associa o nome de um objeto remoto (uma string) a uma referência de um objeto remoto o nome e as associações do objeto remoto não são mantidas após a reinicialização do servidor. Programação com Objetos Distribuídos (C. Geyer) Java-RMI 82

83 A classe LocateRegistry A classe LocateRegistry (cont.) o que é retornado é o stub remoto para o registro com o domínio especificado e a informação da porta. nenhuma operação remota precisa ser executada para obter uma referência (stub) para qualquer registro em qualquer domínio. Programação com Objetos Distribuídos (C. Geyer) Java-RMI 83

84 A classe LocateRegistry package java.rmi.registry; public final class LocateRegistry { public static Registry getregistry() throws java.rmi.remoteexception; public static Registry getregistry(int port) throws java.rmi.remoteexception; public static Registry getregistry(string host) throws java.rmi.remoteexception, java.rmi.unknownhostexception; Programação com Objetos Distribuídos (C. Geyer) Java-RMI 84

85 A classe LocateRegistry public static Registry getregistry(string host, int port) throws java.rmi.remoteexception, java.rmi.unknownhostexception; } public static Registry createregistry(int port) throws java.rmi.remoteexception; Programação com Objetos Distribuídos (C. Geyer) Java-RMI 85

86 A interface RegistryHandler A interface RegistryHandler interface para implementações privadas. package java.rmi.registry; public interface RegistryHandler { Registry registrystub(string host, int port) throws java.rmi.remoteexception, java.rmi.unknownhostexception; Programação com Objetos Distribuídos (C. Geyer) Java-RMI 86

87 A interface RegistryHandler Registry registryimpl(int port) throws java.rmi.remoteexception; } Programação com Objetos Distribuídos (C. Geyer) Java-RMI 87

88 A interface RegistryHandler registrystub retorna uma referência para contatar um registro remoto no domínio e na porta especificados. registryimpl constrói e exporta um registro na porta especificada a porta deve ser diferente de zero. Programação com Objetos Distribuídos (C. Geyer) Java-RMI 88

89 Revisão RMI básico Revisão RMI básico o que é? Apropriado para que tipo de arquitetura de SDs? RMI X OO? RMI X heterogeneidade de hw e plataforma? RMI X direcionalidade da comunicação? RMI x sincronização (em TM)? Programação com Objetos Distribuídos (C. Geyer) Java-RMI 89

90 Revisão RMI básico Revisão RMI básico RMI X RPC? estados? quantos podem ser chamados? semântica do atendimento em chamadas concorrentes? transferência (passagem) de objetos carga de executáveis? Programação com Objetos Distribuídos (C. Geyer) Java-RMI 90

91 Revisão RMI básico Revisão RMI básico localização do objeto servidor: via? como? servidor? cliente? carga de classes de objetos transferidos? quais as formas (3) de passagem de argumentos? qual a relação entre falhas e RMI? RMI e certos métodos como equals? Programação com Objetos Distribuídos (C. Geyer) Java-RMI 91

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

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

Java RMI - Remote Method Invocation. Programação com Objetos Distribuídos (C. Geyer) Java-RMI 1 Java RMI - Remote Method Invocation Programação com Objetos Distribuídos (C. Geyer) Java-RMI 1 ! Autores Autoria " Cláudio Geyer " Marcelo Castiglia Pereira! Local " Instituto de Informática " UFRGS "

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS CUP Disk Memoey CUP Memoey Disk Network CUP Memoey Disk Remote Method Invocation (RMI) Introdução Solução JAVA para Objetos Distribuídos Um objeto existe em uma máquina É possível

Leia mais

Invocação de Métodos Remotos

Invocação de Métodos Remotos Invocação de Métodos Remotos Java RMI (Remote Method Invocation) Tópicos Tecnologia RMI Introdução Modelo de camadas do RMI Arquitetura Fluxo de operação do RMI Passos para implementação Estudo de caso

Leia mais

Java 2 Standard Edition. Fundamentos de. Objetos Remotos. Helder da Rocha www.argonavis.com.br

Java 2 Standard Edition. Fundamentos de. Objetos Remotos. Helder da Rocha www.argonavis.com.br Java 2 Standard Edition Fundamentos de Objetos Remotos Helder da Rocha www.argonavis.com.br 1 Sobre este módulo Este módulo tem como objetivo dar uma visão geral, porém prática, da criação e uso de objetos

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Marcelo Lobosco DCC/UFJF Comunicação em Sistemas Distribuídos Aula 06 Agenda Modelo Cliente-Servidor (cont.) Invocação Remota de Método (Remote Method Invocation RMI) Visão Geral

Leia mais

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

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução Chamadas Remotas de Chamada Remota de Procedimento (RPC) ou Chamada de Função ou Chamada de Subrotina Método de transferência de controle de parte de um processo para outra parte Procedimentos => permite

Leia mais

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

MIDDLEWARE Aplicativos RMI, RPC e eventos Camadas Protocolo Requesição-Respostal Middleware Representação Externa dos Dados Sistemas Operacionais RMI JAVA MIDDLEWARE Aplicativos RMI, RPC e eventos Protocolo Requesição-Respostal Camadas Middleware Representação Externa dos Dados Sistemas Operacionais RMI REMOTE METHOD INVOCATION Invocação remota

Leia mais

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Tutorial RMI (Remote Method Invocation) por Alabê Duarte 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

Leia mais

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

Invocação de Métodos Remotos RMI (Remote Method Invocation) Invocação de Métodos Remotos RMI (Remote Method Invocation) Programação com Objetos Distribuídos Um sistema de objetos distribuídos permite a operação com objetos remotos A partir de uma aplicação cliente

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 3 Invocação de Objetos

Leia mais

Sistemas Distribuídos: Conceitos e Projeto Java RMI

Sistemas Distribuídos: Conceitos e Projeto Java RMI Sistemas Distribuídos: Conceitos e Projeto Java RMI Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.deinf.ufma.br 19 de agosto

Leia mais

COMUNICAÇÃO INTER-PROCESSOS JAVA RMI e RPC. Prof. Cesar Augusto Tacla http://www.dainf.ct.utfpr.edu.br/~tacla

COMUNICAÇÃO INTER-PROCESSOS JAVA RMI e RPC. Prof. Cesar Augusto Tacla http://www.dainf.ct.utfpr.edu.br/~tacla PR UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ COMUNICAÇÃO INTER-PROCESSOS JAVA RMI e RPC Prof. Cesar Augusto Tacla http://www.dainf.ct.utfpr.edu.br/~tacla 1 1. Conceitos Básicos a. Invocação remota (RPC/RMI)

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos LICENCIATURA EM COMPUTAÇÃO Prof. Adriano Avelar Site: www.adrianoavelar.com Email: eam.avelar@gmail.com Relembrando... Mecanismos de Comunicação Middleware Cenário em uma rede Local

Leia mais

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)

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) PR UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ COMUNICAÇÃO INTER-PROCESSOS JAVA RMI e RPC Prof. Cesar Augusto Tacla http://www.dainf.ct.utfpr.edu.br/~tacla 1. Conceitos Básicos a. Invocação remota (RPC/RMI)

Leia mais

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

Sistemas Paralelos e Distribuídos - 2003/2004 Curso: Matemática /Informática Sistemas Distribuídos - 2003/2004 Curso: Ensino da Informática Java RMI - Remote Method Invocation Folha 5-1 No modelo de programação orientada a objectos, vimos que um programa consiste numa colecção de objectos que comunicam entre si através da invocação dos seus

Leia mais

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

Sistemas Distribuídos Métodos de Invocação Remota II. Prof. MSc. Hugo Souza Sistemas Distribuídos Métodos de Invocação Remota II Prof. MSc. Hugo Souza Nesta aula, complementando os conceitos que vimos nas aulas anteriores [aula 15], vamos praticar a programação de laboratório

Leia mais

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

Num sistema de objectos distribuídos, dois conceitos são fundamentais. Folha 10-1 Java RMI - Remote Method Invocation No modelo de programação orientada a objectos, vimos que um programa consiste numa colecção de objectos que comunicam entre si através da invocação dos seus

Leia mais

Java RMI. Alcides Calsavara

Java RMI. Alcides Calsavara 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 de uma classe Java) situado em outra máquina

Leia mais

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

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes Objetos Distribuídos - Programação Distribuída Orientado a Objetos Luiz Affonso Guedes Introdução Conceitos básicos programação distribuída + programação orientada a objetos = Objetos distribuídos Motivação

Leia mais

Adriano Reine Bueno Rafael Barros Silva

Adriano Reine Bueno Rafael Barros Silva Adriano Reine Bueno Rafael Barros Silva Introdução RMI Tecnologias Semelhantes Arquitetura RMI Funcionamento Serialização dos dados Criando Aplicações Distribuídas com RMI Segurança Exemplo prático Referências

Leia mais

Capítulo V Sistemas de Objectos Distribuídos

Capítulo V Sistemas de Objectos Distribuídos From: Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, Addison-Wesley 2001 From: Wolfgang Emmerich Engineering Distributed Objects John Wiley & Sons, Ltd 2000 1 O modelo

Leia mais

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira neto Aula 17-18: Middleware: Implementação de RMI (cont.), RPC, Modelo de Eventos, Exemplo com Java RMI Chamadas dinâmicas

Leia mais

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

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) C# Remote V0 1 .NET Remoting Programação com Objetos Distribuídos (C. Geyer) C# Remote V0 1 Autoria Autores 1a versão Fabio Augusto Dal Castel colaboração revisão Eduardo F. Seganfredo Rodrigo Gatto C. Geyer Programação

Leia mais

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

Sistemas Distribuídos Métodos de Invocação Remota IV. Prof. MSc. Hugo Souza Sistemas Distribuídos Métodos de Invocação Remota IV Prof. MSc. Hugo Souza Nesta aula, complementando os conceitos que vimos nas aulas anteriores [aula 15, aula 16 e aula 17], vamos praticar a segunda

Leia mais

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

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

Leia mais

Invocação de Métodos em Objectos Remotos

Invocação de Métodos em Objectos Remotos Invocação de Métodos em Objectos Remotos Invocações de métodos remotas e locais A remote invocation B local C invocation local E invocation local invocation D remote invocation F Page 1 1 Invocação de

Leia mais

Invocação Remota MC704

Invocação Remota MC704 Invocação Remota MC704 Aplicações distribuídas Aplicação distribuída: conjunto de processos que cooperam entre si para prover um serviço ou realizar uma computação normalmente processos precisam invocar

Leia mais

Programação com Objetos Distribuídos e Componentes

Programação com Objetos Distribuídos e Componentes Programação com Objetos Distribuídos e Componentes Cláudio F. R. Geyer, Luciano Cavalheiro da Silva, Patrícia Kayser Vargas, Juliano Malacarne Resumo Universidade Federal do Rio Grande do Sul Instituto

Leia mais

Middleware de Aplicações Paralelas/Distribuídas

Middleware de Aplicações Paralelas/Distribuídas Computação Paralela Middleware de Aplicações Paralelas/Distribuídas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho Outubro 2005 Principais aspectos a gerir pelo Middleware

Leia mais

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

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 Callbacks Folha 9-1 Vimos, na folha prática anterior, um exemplo muito simples de uma aplicação cliente/ servidor em que o cliente acede à referência remota de um objecto

Leia mais

Objetos Distribuídos. Nazareno Andrade

Objetos Distribuídos. Nazareno Andrade Objetos Distribuídos Nazareno Andrade O Problema Orientação a objetos é um paradigma poderoso Modularidade, extensibilidade, manutenibilidade Porque distribuir os objetos: Localidade dos objetos Tolerância

Leia mais

Remote Procedure Call. Programação distribuída e paralela (C. Geyer) RPC 1

Remote Procedure Call. Programação distribuída e paralela (C. Geyer) RPC 1 Remote Procedure Call Programação distribuída e paralela (C. Geyer) RPC 1 Autoria Autores C. Geyer Local II-UFRGS Versão V11.4 2014-2 Disciplinas SOII Programação distribuída e paralela (C. Geyer) RPC

Leia mais

INF01018 Aula Prática 2 RMI Remote Method Invocation

INF01018 Aula Prática 2 RMI Remote Method Invocation 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

Leia mais

OBJETOS DISTRIBUÍDOS E INVOCAÇÃO REMOTA

OBJETOS DISTRIBUÍDOS E INVOCAÇÃO REMOTA OBJETOS DISTRIBUÍDOS E INVOCAÇÃO REMOTA SUMÁRIO Introdução Comunicação entre objetos distribuídos Eventos e Notificações 1.INTRODUÇÃO Middleware oferece: Transparência de localização Independência de protocolos

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Comunicação Remota Gustavo Reis gustavo.reis@ifsudestemg.edu.br 1 Comunicação entre processos está no coração de todo sistema distribuído. Não tem sentido estudar sistemas distribuídos

Leia mais

RMI/JNDI - Fundamentos

RMI/JNDI - Fundamentos c o l u n a Professor J RMI/JNDI - Fundamentos Um exemplo prático do que são e de como funcionam RMI e JNDI Roberto Vezzoni (roberto.vezzoni@gmail.com): SCJP, faz Ciência da Computação na Faesa e atua

Leia mais

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve - 981648-9

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve - 981648-9 Laboratório de Computação VI JAVA IDL Fabricio Aparecido Breve - 981648-9 O que é Java IDL? Java IDL é uma tecnologia para objetos distribuídos, ou seja, objetos em diferentes plataformas interagindo através

Leia mais

Programação distribuída e paralela (C. Geyer) RPC 1

Programação distribuída e paralela (C. Geyer) RPC 1 Programação distribuída e paralela (C. Geyer) RPC 1 Autores C. Geyer Local II-UFRGS Versão v6 2008-2 Disciplinas SOII Programação distribuída e paralela (C. Geyer) RPC 2 Bibliografia base original dos

Leia mais

APÊNDICE A EXEMPLO DE APLICAÇÃO

APÊNDICE A EXEMPLO DE APLICAÇÃO APÊNDICE A EXEMPLO DE APLICAÇÃO Para ilustrar os três métodos de distribuição de objetos apresentados nesta dissertação iremos, a seguir, mostrar um exemplo de implementação de uma aplicação. São apresentadas

Leia mais

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes www.edeyson.com.br

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes www.edeyson.com.br Sistemas Distribuídos RPC x RMI Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Chamada Remota a Procedimento Definição Passagem de Parâmetros STUBS Semântica de Falhas 2 RPC Chamada Remota a

Leia mais

Java Spaces Exemplos

Java Spaces Exemplos Java Spaces Exemplos Programação com Objetos Distribuídos (C. Geyer) Java Spaces - Exemplos V0 1 Autoria! Autores! Local " Cláudio Geyer " Instituto de Informática " UFRGS " disciplina: Programação com

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Faculdades SENAC Análise e Desenvolvimento de Sistemas 28 de abril de 2010 Principais suportes de Java RMI (Remote Method Invocation), da Sun Microsystems DCOM (Distributed Component Object Model), da

Leia mais

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

Licenciatura em Engenharia Informática PROVA DE TESTE PRÁTICO Sistemas Distribuídos I 2º Semestre, 2005/2006 Departamento de Informática Faculdade de Ciências e Tecnologia UNIVERSIDADE NOVA DE LISBOA Licenciatura em Engenharia Informática PROVA DE TESTE PRÁTICO Sistemas Distribuídos I 2º Semestre, 2005/2006 NOTAS:

Leia mais

RMI: Uma Visão Conceitual

RMI: Uma Visão Conceitual RMI: Uma Visão Conceitual Márcio Castro, Mateus Raeder e Thiago Nunes 11 de abril de 2007 Resumo Invocação de Método Remoto (Remote Method Invocation - RMI) trata-se de uma abordagem Java para disponibilizar

Leia mais

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

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB) Uma Introdução à Arquitetura Francisco C. R. Reverbel 1 Copyright 1998-2006 Francisco Reverbel O Object Request Broker (ORB) Via de comunicação entre objetos (object bus), na arquitetura do OMG Definido

Leia mais

Sistemas Distribuídos RPC Remote Procedure Call

Sistemas Distribuídos RPC Remote Procedure Call Sistemas Distribuídos RPC Remote Procedure Call Universidade Federal do ABC Turma: Ciência da Computação Prof. Dr. Francisco Isidro Massetto Cliente/Servidor Quais os problemas? Baseado em E/S Erro propagado

Leia mais

FBV - Linguagem de Programação II. Um pouco sobre Java

FBV - Linguagem de Programação II. Um pouco sobre Java FBV - Linguagem de Programação II Um pouco sobre Java História 1992: um grupo de engenheiros da Sun Microsystems desenvolve uma linguagem para pequenos dispositivos, batizada de Oak Desenvolvida com base

Leia mais

Objetos Distribuídos em Java

Objetos Distribuídos em Java J530 - Enterprise JavaBeans Objetos Distribuídos em Java Helder da Rocha (helder@acm.org) argonavis.com.br 1 Objetivo O objetivo deste módulo é fornecer os pré-requisitos de computação distribuída necessários

Leia mais

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

EJB. Session Beans. J2EE (C. Geyer) Introdução a SessionBean 1 EJB Session Beans J2EE (C. Geyer) Introdução a SessionBean 1 Autores! Autores " Cláudio Geyer " Eduardo Studzinski Estima de Castro (EJB 3.0) " Gisele Pinheiro Souza (EJB 3.0) J2EE (C. Geyer) Introdução

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem

Leia mais

INE5380 - Sistemas Distribuídos

INE5380 - Sistemas Distribuídos INE5380 - Sistemas Distribuídos Object Request Broker e CORBA Por: Léo Willian Kölln - 0513227-4 Novembro de 2006 ORB Object Request Broker ORB aqui será tratado como um Middleware que permite a construção

Leia mais

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

Middleware. Camada Intermediária de Suporte a Sistemas Distribuídos Middleware Camada Intermediária de Suporte a Sistemas Distribuídos Alternativas de comunicação entre processos (IPC) Mecanismos de IPC tradicionais (ou de baixo nível) Memória compartilhada, filas de mensagens,

Leia mais

Um pouco do Java. Prof. Eduardo

Um pouco do Java. Prof. Eduardo Um pouco do Java Prof. Eduardo Introdução A tecnologia JAVA é composta pela linguagem de programação JAVA e pela plataforma de desenvolvimento JAVA. Os programas são escritos em arquivos-texto com a extensão.java.

Leia mais

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira Neto Web Services Web Services Existem diferentes tipos de comunicação em um sistema distribuído: Sockets Invocação

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Soquetes Um soquete é formado por um endereço IP concatenado com um número de porta. Em geral, os soquetes utilizam uma arquitetura cliente-servidor. O servidor espera por pedidos

Leia mais

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira Neto Web Services (continuação) WSDL - Web Service Definition Language WSDL permite descrever o serviço que será oferecido

Leia mais

Descrição. Implementação. Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos

Descrição. Implementação. Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos Descrição Implemente nesta atividade de laboratório um programa em Java utilizando threads

Leia mais

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira Neto Comunicação Inter-Processos Sockets e Portas Introdução Sistemas distribuídos consistem da comunicação entre processos

Leia mais

RMI RMI-IIOP Java IDL (CORBA) Helder da Rocha www.argonavis.com.br

RMI RMI-IIOP Java IDL (CORBA) Helder da Rocha www.argonavis.com.br RMI RMI-IIOP Java IDL (CORBA) Helder da Rocha www.argonavis.com.br 1 Sumário RMI/RPC e Java em ambientes distribuídos Java IDL (~25%) Arquitetura CORBA e mapeamento Java-IDL Construção de uma aplicação

Leia mais

CAPÍTULO 7 JAVA 7.1 CARACTERÍSTICAS DA LINGUAGEM

CAPÍTULO 7 JAVA 7.1 CARACTERÍSTICAS DA LINGUAGEM CAPÍTULO 7 JAVA Java é uma linguagem orientada a objeto cujo projeto foi desenvolvido pela Sun Microsystems no início de 1991. Ela foi originalmente concebida para ser utilizada na programação de dispositivos

Leia mais

Comunicação usando soquetes.

Comunicação usando soquetes. Soquetes Um soquete é definido como uma extremidade de um canal de comunicação. Um par de processos (ou threads) se comunica em uma rede utilizando um par de soquetes - um para cada processo. Um soquete

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 5. Tratamento de Exceções Introdução e conceitos Capturando exceção usando

Leia mais

Capítulo VI CORBA. Common Object Request Broker Architecture. [Cardoso2008] Programação de Sistemas Distribuídos em Java, Jorge Cardoso, FCA, 2008.

Capítulo VI CORBA. Common Object Request Broker Architecture. [Cardoso2008] Programação de Sistemas Distribuídos em Java, Jorge Cardoso, FCA, 2008. Common Object Request Broker Architecture [Cardoso2008] Programação de Sistemas Distribuídos em Java, Jorge Cardoso, FCA, 2008. From: Fintan Bolton Pure CORBA SAMS, 2001 From: Coulouris, Dollimore and

Leia mais

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

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 Número: Nome: Página 1 de 5 LEIC/LERC 2012/13, Repescagem do 1º Teste de Sistemas Distribuídos, 25 de Junho de 2013 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração:

Leia mais

Desenvolvimento de Aplicações Java/CORBA

Desenvolvimento de Aplicações Java/CORBA Tutorial Desenvolvimento de Aplicações Java/CORBA Emerson Ribeiro de Mello, Fábio Favarim e Joni da Silva Fraga {emerson, fabio, fraga@das.ufsc.br Este tutorial ensina como criar uma aplicação distribuída

Leia mais

Sistemas Distribuídos Comunicação entre Processos em Sistemas Distribuídos: Middleware de comunicação Aula II Prof. Rosemary Silveira F. Melo Comunicação em sistemas distribuídos é um ponto fundamental

Leia mais

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição Lista de Contas Lista de Contas: Assinatura null Quais são os métodos necessários? class ListaDeContas { void inserir (Conta c) { void retirar (Conta c) { Conta procurar (String num) { Listas de Contas:

Leia mais

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Curso Adonai QUESTÕES Disciplina Linguagem JAVA 1) Qual será o valor da string c, caso o programa rode com a seguinte linha de comando? > java Teste um dois tres public class Teste { public static void main(string[] args) { String a = args[0]; String

Leia mais

Java 2 Standard Edition Como criar classes e objetos

Java 2 Standard Edition Como criar classes e objetos Java 2 Standard Edition Como criar classes e objetos Helder da Rocha www.argonavis.com.br 1 Assuntos abordados Este módulo explora detalhes da construção de classes e objetos Construtores Implicações da

Leia mais

Guia de Fatores de Qualidade de OO e Java

Guia de Fatores de Qualidade de OO e Java Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.

Leia mais

Universidade Federal de Pernambuco Centro de Informática Recife - Pernambuco

Universidade Federal de Pernambuco Centro de Informática Recife - Pernambuco Introdução a Middleware: Visão do Programador de Aplicações Distribuídas Universidade Federal de Pernambuco Centro de Informática Recife - Pernambuco Relembrando... Aplicação Middleware Aplicação Middleware

Leia mais

Estudo de Caso Sobre Programação Orientada a Aspectos Utilizando Protocolo RMI

Estudo de Caso Sobre Programação Orientada a Aspectos Utilizando Protocolo RMI Estudo de Caso Sobre Programação Orientada a Aspectos Utilizando Protocolo RMI Felipe da Silva Borges André Luis Castro de Freitas 1 1 Centro de Ciências Computacionais Universidade Federal do Rio Grande

Leia mais

Sistemas Distribuídos 59. Sistemas Distribuídos 61. "Receive não-bloqueante:

Sistemas Distribuídos 59. Sistemas Distribuídos 61. Receive não-bloqueante: Comunicação entre processos! Memória Compartilhada: " os processo compartilham variáveis e trocam informações através do uso dessas variáveis compartilhadas COMUNICAÇÃO ENTRE PROCESSOS P1 Área Compartilhda!

Leia mais

Comunicação em Sistemas Distribuídos

Comunicação em Sistemas Distribuídos Comunicação em Sistemas Distribuídos Sockets Aplicações Protocolo de Aplicação FTP, SMTP, HTTP, Telnet, SNMP, etc. sockets TCP, UDP IP Data Link Ethernet, Token Ring, FDDI, etc Física Conjunto de APIs

Leia mais

Sobre o Professor Dr. Sylvio Barbon Junior

Sobre o Professor Dr. Sylvio Barbon Junior 5COP088 Laboratório de Programação Aula 1 Java Prof. Dr. Sylvio Barbon Junior Sylvio Barbon Jr barbon@uel.br 1 Sobre o Professor Dr. Sylvio Barbon Junior Formação: Ciência e Engenharia da Computação (2005

Leia mais

Exemplos práticos do uso de RMI em sistemas distribuídos

Exemplos práticos do uso de RMI em sistemas distribuídos Exemplos práticos do uso de RMI em sistemas distribuídos Elder de Macedo Rodrigues, Guilherme Montez Guindani, Leonardo Albernaz Amaral 1 Fábio Delamare 2 Pontifícia Universidade Católica do Rio Grande

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Classes abstratas Até agora, usamos interfaces toda vez que queríamos representar algum conceito abstrato

Leia mais

Linguagem de Programação Orientada a Objeto. Introdução a Orientação a Objetos Professora Sheila Cáceres

Linguagem de Programação Orientada a Objeto. Introdução a Orientação a Objetos Professora Sheila Cáceres Linguagem de Programação Orientada a Objeto Introdução a Orientação a Objetos Professora Sheila Cáceres Introdução a Orientação a Objetos No mundo real, tudo é objeto!; Os objetos se relacionam entre si

Leia mais

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Aula 09 Introdução à Java Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Agenda da Aula Java: Sintaxe; Tipos de Dados; Variáveis; Impressão de Dados.

Leia mais

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

Programação Concorrente em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM Programação Concorrente em Java Profa Andréa Schwertner Charão DLSC/CT/UFSM O que é programação concorrente? Um programa, múltiplos fluxos de execução Quando usar programação concorrente? Desempenho Ex.:

Leia mais

Reuso com Herança a e Composiçã

Reuso com Herança a e Composiçã Java 2 Standard Edition Reuso com Herança a e Composiçã ção Helder da Rocha www.argonavis.com.br 1 Como aumentar as chances de reuso Separar as partes que podem mudar das partes que não mudam. Exemplo:

Leia mais

Enterprise Java Beans

Enterprise Java Beans Enterprise Java Beans Prof. Pasteur Ottoni de Miranda Junior DCC PUC Minas Disponível em www.pasteurjr.blogspot.com 1-O que é um Enterprise Java Bean? O Entertprise Java Bean (EJB) é um componente server-side

Leia mais

Programação com sockets (em Java)

Programação com sockets (em Java) com sockets (em Java) Prof. Dr. Julio Arakaki Depto. Ciência da 1 Comunicação entre processos // aplicações - é um dos mecanismos mais utilizados - Java oferece modos de utilização:. TCP ( Transmission

Leia mais

Introdução à Linguagem Java

Introdução à Linguagem Java Introdução à Linguagem Java Histórico: Início da década de 90. Pequeno grupo de projetos da Sun Microsystems, denominado Green. Criar uma nova geração de computadores portáveis, capazes de se comunicar

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Comunicação- Protocolos, Tipos, RPC Capítulo 4 Agenda Protocolos em Camadas Pilhas de Protocolos em Sistemas Distribuídos Tipos de Comunicação

Leia mais

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único Pacotes e Encapsulamento Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Introdução Permite o agrupamento de classes em uma coleção chamada pacote Um pacote é uma coleção de classes

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 2: Classes e objectos LEEC@IST Java 1/24 Classes (1) Sintaxe Qualif* class Ident [ extends IdentC] [ implements IdentI [,IdentI]* ] { [ Atributos Métodos ]* Qualif:

Leia mais

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

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this. Aula 2 Objetivos Encapsulamento na linguagem Java; Utilizando a referência this. Encapsulamento, data hiding é um conceito bastante importante em orientação a objetos. É utilizado para restringir o acesso

Leia mais

Processos (Threads,Virtualização e Migração de Código)

Processos (Threads,Virtualização e Migração de Código) Processos (Threads,Virtualização e Migração de Código) Roteiro Processos Threads Virtualização Migração de Código O que é um processo?! Processos são programas em execução. Processo Processo Processo tem

Leia mais

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.deinf.ufma.br

Leia mais

SISTEMAS DISTRIBUIDOS

SISTEMAS DISTRIBUIDOS 1 2 Caracterização de Sistemas Distribuídos: Os sistemas distribuídos estão em toda parte. A Internet permite que usuários de todo o mundo acessem seus serviços onde quer que possam estar. Cada organização

Leia mais

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

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em

Leia mais

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4 Sistemas Distribuídos Capítulos 3 e 4 - Aula 4 Aula passada Threads Threads em SDs Processos Clientes Processos Servidores Aula de hoje Clusters de Servidores Migração de Código Comunicação (Cap. 4) Fundamentos

Leia mais

Linguagens de. Aula 02. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br

Linguagens de. Aula 02. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagens de Programação III Aula 02 Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagens de Programação Técnica de comunicação padronizada para enviar instruções a um computador. Assim

Leia mais

Módulo 06 Desenho de Classes

Módulo 06 Desenho de Classes Módulo 06 Desenho de Classes Última Atualização: 13/06/2010 1 Objetivos Definir os conceitos de herança, polimorfismo, sobrecarga (overloading), sobreescrita(overriding) e invocação virtual de métodos.

Leia mais

BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com

BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com HelloWorld.java: public class HelloWorld { public static void main (String[] args) { System.out.println( Hello, World ); } } Identificadores são usados

Leia mais

Objetos distribuídos. Roteiro. Java IDL

Objetos distribuídos. Roteiro. Java IDL Objetos distribuídos Java IDL Roteiro Java IDL Definindo a interface IDL Compilando a interface IDL Criando o servidor Criando o cliente Rodando a aplicação Rodando a aplicação em duas máquinas Java IDL

Leia mais

Sistemas distribuídos:comunicação

Sistemas distribuídos:comunicação M. G. Santos marcela@estacio.edu.br Faculdade Câmara Cascudo - Estácio de Sá 16 de abril de 2010 Formas de comunicação Produtor-consumidor: comunicação uni-direccional, com o produtor entregando ao consumidor.

Leia mais