Java – Remote Method Invocation (RMI)

Slides:



Advertisements
Apresentações semelhantes
Sistemas Distribuídos
Advertisements

Sistemas Distribuídos Baseados em Objetos
Java Remote Method Invocation Java RMI
UNIPAC – ARAGUARI CAMPUS – IX PROF. EVERTON HIPÓLITO DE FREITAS
Bruno Rafael de Oliveira Rodrigues
RMI-IIOP.
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.
Comunicação Distribuída
Interação Cliente Servidor
Desenvolvimento de Aplicações Distribuídas
Invocação de Métodos Remotos RMI
1 Comunicação Inter-Processos -> RMI -> RPC -> TCP -> UDP (Abstração de passagem de mensagem)
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.
Comunicação Entre Objetos Distribuídos
Comunicação Inter-Processos
Objetos Distribuídos Padrão CORBA
DAS Sistemas Distribuídos para Automação Industrial
PROGRAMAÇÃO DISTRIBUÍDA EM JAVA Verão/2001
Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB.
Sistemas Distribuídos
Camada de Transporte: Portas, Sockets, Aplicações em Rede
Introdução à Programação Distribuída em Java
Middleware e Sistemas Distribuídos
Modelo de referência OSI
Arquitetura CORBA e Objetos Distribuídos
Web Services Uninorte Semana de Tecnologia da Informação
CORBA e Desenvolvimento Baseado em Componentes
Chamada Remota de Procedimentos
O Modelo OSI Guilherme Guimarães.
Marcela Bezerra da Silva Cin - UFPE
Java Avançado Luiz Carlos d´Oleron SJCP Java Sockets.
Sistemas Distribuídos Carlos A. G. Ferraz DI/UFPE Aula 07.
Remote Method Invocation RMI
Concorrência e Java RMI
Mole: Um Sistema de Agentes Móveis Baseado em Java Curso de Ciência da Computação Departamento de Informática Disciplina de Tópicos Especiais em Computação.
T. D. S. I. PARA WEB Prof. Emmanuel Nolêto. Java RMI.
Tecgraf PUC-Rio maio de 2011 Principais conceitos de CORBA.
TMV Gestão de Redes e de Sistemas Distribuídos ???? Sumário  Arquitectura de Gestão SNMP  Arquitectura de Gestão OSI/TMN  Novas Arquitecturas.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
RMI x C# Remote Emilena Specht – 1113/01/9 2004/01
CORBA Apresentação do Padrão CORBA Maurício Maron Mendes Ramiro Pereira de Magalhães
Java RMI João Gabriel (jggxm).
RMI - JAVA.
Conceitos da arquitetura
Comunicação.
Introdução a JEE Marco A. S. Reis Arquiteto de Software Abril/2011.
Unidade 1 – Introdução a J2EE Prof.: Henrique Santos
Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB.
RMI (Remote Method Invocation) Bruno Edson Plínio Tadeu
Arquitetura de Redes de Computadores – Luiz Paulo Maia Camada de Transporte1 Arquitetura de Redes de Computadores Luiz Paulo Maia Camada de Transporte.
RMI Objetos Distribuídos Luiz C. D´oleron SCJP
Administração e Projeto de Redes
Desenvolvimento de Aplicações para WEB Para inserir o logotipo da empresa neste slide No menu 'Inserir' Selecione 'Figura' Localize o arquivo com o logotipo.
Conceitos do Cliente Funcionamento Básico do Cliente Como Clientes acessam e usam Objetos Distribúidos.
1 Programação Distribuída em Java Aula Na aula de hoje veremos: Introdução Conceito de Rede Protocolos Modelo ISO/OSI Modelo TCP/IP Modelo Cliente/Servidor.
Redes de computadores: Aplicações Prof. Dr. Amine BERQIA
RMI Remote Method Invocation
Camada de Aplicação Prof. Horácio. Objetivo Apresentar os detalhes específicos dos tipos de aplicação; Apresentar o modelo cliente-servidor; Apresentar.
Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Servidores.
Passagens de Mensagens Prof. Dr. Norian Marranghello
UCSal – Tecnologia em Análise e Desenvolvimento de Sistemas Programação para Aplicações WEB Profa. Semíramis Assis
Versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 Principais conceitos de CORBA.
Sistemas Distribuídos Prof. Marcus Rodrigues
Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.
Protocolos de Comunicação e Passagem de Mensagens
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais IESP - FATEC-PB Professor: Gustavo Wagner.
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
Curso Superior em Redes de Computadores Camada de Aplicação Prof. Sales Filho.
Transcrição da apresentação:

Java – Remote Method Invocation (RMI) São Paulo, 2011 Universidade Paulista (UNIP) Java – Remote Method Invocation (RMI) Prof. MSc. Vladimir Camelo vladimir.professor@gmail.com 16/04/2017 vladimir.professor@gmail.com

Introdução Sistemas distribuídos: Neste tipo de sistema existe uma necessidade de comunicação entre sistemas em máquinas distintas. Sockets como solução? Não oferecem um modelo de programação transparente e flexível tanto para o usuário quanto para o desenvolvedor respectivamente. 16/04/2017 vladimir.professor@gmail.com

Introdução O principal objetivo em sistemas distribuídos é: Utilizar objetos ou componentes que estão localizados em outras máquinas sem se preocupar com a camada de transporte, ou seja, como será realizada essa comunicação entre as máquinas. 16/04/2017 vladimir.professor@gmail.com

Programação com sockets em Java Sistemas modernos: Comunicam-se entre máquinas e algumas vezes entre processos na mesma máquina, por meio do uso de sockets. O que é socket? É um canal de comunicação por meio do qual uma aplicação se comunica com outra. É referenciado por um número de porta, de maneira que a camada TCP possa identificar a aplicação de destino, ou seja, a aplicação que realizou esta chamada. 16/04/2017 vladimir.professor@gmail.com

Programação com sockets em Java Comunicação mais simples entre aplicativos localizados em máquinas diferentes, porém pela simplicidade não é bem aplicado na manipulação de tipos de dados ou de aplicações muito complexas, principalmente quando o componente da aplicação está em máquinas diferentes. 16/04/2017 vladimir.professor@gmail.com

Programação com sockets em Java Existem três tipos de sockets: Datagram sockets: Envia o pacote sem a confirmação de que o servidor recebeu; esta interface é implementada pelo protocolo User Datagram Protocol (UDP). Stream sockets: Envia o pacote com o cuidado de que o servidor receba e que a conexão deva estar ativa no momento da comunicação; esta interface é implementada pelo protocolo Transfer Control Protocol (TCP). 16/04/2017 vladimir.professor@gmail.com

Programação com sockets em Java Existem três tipos de sockets: Raw sockets: Envia o pacote sem utilizar as camadas de transporte, sendo utilizada a camada de rede Internet Protocol (IP) e no Internet Control Message Protocol (ICMP). 16/04/2017 vladimir.professor@gmail.com

Programação com sockets em Java A biblioteca para sockets: ServerSocket: esta classe possibilita criar um servidor de sockets, sendo deste a obrigação de atender a uma demanda de conexão via a rede. Socket: esta classe possibilita criar um cliente socket que é um ponto final para a comunicação entre dois nós da rede (computadores). 16/04/2017 vladimir.professor@gmail.com

Programação com sockets em Java (Exemplo) 16/04/2017 vladimir.professor@gmail.com

Programação com sockets em Java (Exemplo) 16/04/2017 vladimir.professor@gmail.com

Programação com sockets em Java (Exemplo) 16/04/2017 vladimir.professor@gmail.com

Programação com sockets em Java (Exemplo) 16/04/2017 vladimir.professor@gmail.com

Java para sistemas distribuídos Banco de dados: JDBC, SQLJ, JDO; Objetos distribuídos: Java RMI, RMI-IIOP, Java IDL, Enterprise Java Beans (EJB); Serviços distribuídos: JTA, JTS, JAAS, DGC, JNDI; Eventos distribuídos: JMS; Web e Web Services: JAXP, JAXB, JAXM, JAXR, JAX-RPC; E-mail: JavaMail; 16/04/2017 vladimir.professor@gmail.com

Objetos remotos com Java RMI Java RMI (Remote Method Invocation) pode ser implementado usando protocolos e infra-estrutura do ambiente de desenvolvimento Java (JRMP e RMI Registry) ou usando IIOP e ORBs (especificações do ambiente CORBA). 16/04/2017 vladimir.professor@gmail.com

Objetos remotos com Java RMI JRMP - Java Remote Method Protocol: Pacote java.rmi - RMI básico; Ideal para aplicações 100% Java. 16/04/2017 vladimir.professor@gmail.com

Objetos remotos com Java RMI IIOP - Internet Inter-ORB Protocol: Pacote javax.rmi - RMI sobre IIOP; Ideal para ambientes heterogêneos. 16/04/2017 vladimir.professor@gmail.com

Objetos remotos com Java RMI A forma de desenvolvimento é similar: Há poucas diferenças para a geração da infra-estrutura (Ex.: proxies) e para o registro dos objetos remotos alocados no servidor; RMI sobre IIOP possibilita programação Java RMI e comunicação em ambiente CORBA, viabilizando integração entre o Java e outras linguagens de programação sem a necessidade de aprender os conceitos de implementação do OMG IDL 16/04/2017 vladimir.professor@gmail.com

Interface de programação Interface de comunicação em rede 16/04/2017 vladimir.professor@gmail.com

Java Remote Method Invocation Possibilita a criação de aplicações Java para ambientes distribuídos; Com a obtenção da referência de um objeto remoto, sua utilização é igual a de um objeto local; O RMI encapsula a interface com o protocolo de rede (socket); 16/04/2017 vladimir.professor@gmail.com

Java Remote Method Invocation Complexidade de programação e ambiente: É muito simples construir aplicações RMI, comparando-se com aplicações que utilizam tecnologia RPC e CORBA; Ambiente: Exige somente suporte TCP/IP e um serviço de nomes de objetos (rmiregistry), disponibilizado gratuitamente com o JDK/SDK. 16/04/2017 vladimir.professor@gmail.com

Java Remote Method Invocation O Java RMI é uma interface que possibilita a intercomunicação entre objetos Java localizados em diferentes hosts; Cada objeto remoto implementa uma interface remota que especifica quais de seus métodos podem ser invocados remotamente pelos clientes; Os clientes invocam tais métodos exatamente como invocam métodos locais. 16/04/2017 vladimir.professor@gmail.com

Arquitetura Java RMI Uma aplicação distribuída com RMI tem acesso transparente ao objeto remoto por meio de sua Interface remota: A "Interface remota" é uma interface que estende os métodos e propriedades da API java.rmi.Remote; A partir da Interface remota e implementação do objeto remoto o sistema gera objetos (proxies) que realizam todas as tarefas necessárias para viabilizar a comunicação em rede 16/04/2017 vladimir.professor@gmail.com

Arquitetura Java RMI 16/04/2017 vladimir.professor@gmail.com

Camada de referência remota Arquitetura Java RMI JVM “A” JVM “B” Gerados pelo desenvolvedor Aplicação Objeto remoto Stub Skeleton Gerados automaticamente Camada de referência remota Classes que Implementam o RMI (Java.rmi.*) Camada de transporte 16/04/2017 vladimir.professor@gmail.com

Arquitetura Java RMI 16/04/2017 vladimir.professor@gmail.com

Arquitetura Java RMI 16/04/2017 vladimir.professor@gmail.com

Arquitetura Java RMI 16/04/2017 vladimir.professor@gmail.com

Arquitetura Java RMI 16/04/2017 vladimir.professor@gmail.com

Arquitetura Java RMI 16/04/2017 vladimir.professor@gmail.com

Arquitetura Java RMI 16/04/2017 vladimir.professor@gmail.com

Arquitetura Java RMI 16/04/2017 vladimir.professor@gmail.com

Arquitetura Java RMI 16/04/2017 vladimir.professor@gmail.com

Proxy A implementação RMI é um exemplo do padrão de projeto chamado Proxy; Proxy é uma solução para situações onde o objeto de interesse está inacessível diretamente, mas o cliente precisa operar em uma interface idêntica para ter acesso a esse objeto; A solução via Proxy: criar uma classe que tenha a mesma interface que o objeto de interesse e que implemente, em seus métodos, a lógica de comunicação com o objeto inacessível; Em RMI, o proxy é o Stub são gerados automaticamente pelo ambiente de desenvolvimento (rmic). 16/04/2017 vladimir.professor@gmail.com

Proxy Stub Análogo ao RPC Stub é a representação local do objeto remoto localizado no cliente; É gerado automaticamente por meio do rmic Ex.: rmic Hello_Time Hello_Time_Stub.class 16/04/2017 vladimir.professor@gmail.com

Stub Camada de referência remota (RRL): Responsável pela parte semântica da ativação remota; Uma chamada do Stub é repassada a essa camada que faz uso da camada de transporte; 16/04/2017 vladimir.professor@gmail.com

Stub Camada de referência remota (RRL): Tratamento dos diferentes tipos de referência remota: Unicast: apenas um objeto Multicast: existe um conjunto de objetos e a RRL é quem faz as chamadas necessárias a todos eles por meio da camada de transporte. Implementa as estratégias para reconectar: Caso o objeto remoto torna-se inacessível. 16/04/2017 vladimir.professor@gmail.com

Stub Camada de transporte: Trata da criação / manutenção das conexões; Efetua os envios / recebimentos de dados entre a máquina cliente e servidora; 16/04/2017 vladimir.professor@gmail.com

Stub Camada de transporte: Padrão é utilizar sockets (java.net.Socket e ServerSocket) que são obtidos de uma fábrica (java.RMISocketFactory) através do métodos: CreateSocket; CreatServerSocket; Oferece também um mecanismo via HTTP para solucionar problemas com firewalls. 16/04/2017 vladimir.professor@gmail.com

Stub O cliente, quando invoca remotamente um método, não conversa diretamente com o objeto remoto, mas com uma implementação da interface remota chamada stub, que é enviada ao cliente. O stub, por sua vez, passa a invocação para a camada de referência remota. 16/04/2017 vladimir.professor@gmail.com

Execução no servidor O primeiro passo antes de executar o servidor é ativar uma espécie de servidor de nomes de servidores que atendem solicitações de métodos remotos. Isto é feito chamando-se o programa rmiregistry. Este programa pode estar ouvindo portas específicas, como por exemplo: % rmiregistry 2048 & e outras; Uma vez que este programa está executando, pode-se chamar o interpretador java para o arquivo servidor.class . 16/04/2017 vladimir.professor@gmail.com

Esquema da chamada cliente Stub “Oi cliente” unip.br Registry lookup(.../Servidor) cliente Registry Servidor está aqui Solicitação de stub Servidor_Stub.class Stub Stub sayHello() “Oi cliente” Servidor..class 16/04/2017 vladimir.professor@gmail.com

Como usar RMI em 10 passos O objetivo deste módulo é oferecer apenas uma introdução básica a Java RMI. Isto será feito através de um exemplo simples: Definir a interface Implementar os objetos remotos Implementar um servidor para os objetos Compilar os objetos remotos Gerar stubs com rmic Escrever, compilar e instalar o(s) cliente(s) Instalar o stub no(s) cliente(s) Iniciar o RMI Registry no servidor Iniciar o servidor de objetos Iniciar os clientes informando o endereço do servidor. 16/04/2017 vladimir.professor@gmail.com

Java – Remote Method Invocation (RMI) São Paulo, 2011 Universidade Paulista (UNIP) Java – Remote Method Invocation (RMI) Prof. MSc. Vladimir Camelo vladimir.professor@gmail.com 16/04/2017 vladimir.professor@gmail.com