Programa de Pós-Graduação Lato Sensu MBA em Gestão de Software Sistemas e Objetos Distribuídos Aula 04: Objetos Distribuídos com Java RMI e CORBA Visão Prática Prof. Dr. Fábio M. Costa 28/06/08
Roteiro Arquitetura geral da aplicação-exemplo Descrição da implementação em JavaRMI Descrição da implementação em CORBA Demonstração da execução Fazer pequenas extensões e demonstrar o processo de compilação e construção das aplicações
Arquitetura Geral da Aplicação em Java Cliente-servidor Com servidor centralizado Um objeto remoto apenas: Biblioteca Demais objetos são locais
Aplicação-exemplo: Classes
Arquitetura inicial: Centralizada Livro Livro Livro Usuário Usuário Cliente Biblioteca Usuário Empréstimo Empréstimo Processo Cliente Empréstimo Processo Servidor
Demonstração Compilar todos os arquivos (javac) Iniciar o rmiregistry Iniciar o servidor Iniciar os clientes Discutir as políticas de segurança e a forma de executar a aplicação a partir da linha de comando
Arquitetura Geral da Aplicação em CORBA Cliente-servidor Com servidor centralizado Um objeto remoto apenas: Biblioteca Demais objetos são locais (value types)
Exemplo: Biblioteca
Elementos da Definição de Interfaces em CORBA IDL
Definição de Tipos em CORBA IDL typedef struct _Address { string logradouro; short numero; string complemento; string bairro; string cidade; } Address; typedef sequence<Address> AddressList; interface Usuario { ... }; Tipos estruturados Tipos Atômicos Tipo de Objeto
Módulos em CORBA IDL Módulos module Library { ttypedef struct _Address { string logradouro; short numero; string complemento; string bairro; string cidade; } Address; }; module Empresa { typedef struct _Address { string caixaPostal; Módulos Library::Address Empresa::Address
Objetos de CORBA: Atributos interface Biblioteca { readonly attribute string politica; attribute long num_livros; ... }; interface Usuario { readonly attribute string nome; attribute Address endereço; Clientes não podem mudar o valor Atributos mutáveis Tipo do Atributo Nome do Atributo
Objetos de CORBA: Operações Categoria de Parâmetro typedef sequence<Emprestimo> ListaDeEmprestimos; interface Biblioteca { ... void emprestaLivro(in string titulo, in string usuario); ListaDeEmprestimos visualizaEmprestimos(); }; Lista de Parâmetros Tipos de Retorno Tipo do parâmetro Nome da operação (usado em requisições) Nome do Parâmetro
Requisições de Objeto Requisições são definidas por objetos clientes Uma requisição consiste de: uma referência ao objeto servidor o nome da operação requisitada argumentos da requisição (parâmetros reais) informação de contexto Requisições são executadas em modo síncrono (bloqueante) Requisições podem ser definidas de duas formas: estaticamente dinamicamente
Objetos CORBA: Exceções Exceções genéricas (ex.: rede fora do ar, ref. de objeto inválida, esgotou a memória) Exceções específicas de determinados tipos Nome da Exceção Dados da Exceção exception LivroEmprestado{sequence<Date> free;}; interface Biblioteca { ... void emprestaLivro(in Date d) raises(LivroEmprestado); }; Operações declaram as exceções que podem gerar
Objetos de CORBA: Sub-tipos Possui Super-tipo implícito: Object Atributos Herdados por Biblioteca interface Instituicao { readonly attribute string nome; attribute Address endereco; }; interface Biblioteca : Instituicao { exception LivroEmprestado{...}; readonly attribute string politica; attribute long num_livros; void emprestaLivro(in Date d) raises(LivroEmprestado); Supertipo
Demonstração Compilar todos os arquivos (javac) Iniciar o servidor de nomes e disponibilizar a referência de objeto para ele Iniciar o servidor (windows) Iniciar os clientes (linux)
Exercícios Aula 03 1: Identificar os serviços e transparências de distribuição que já estejam presentes na aplicação-exemplo 2: Propor extensões às funcionalidades da aplicação novos métodos remotos (apenas a descrição geral) 3: Propor uma arquitetura distribuída para a aplicação lado servidor distribuído em máquinas diferentes explicar os motivos para escolha da arquitetura distribuída 4: Analisar os requisitos da aplicação quanto a: outros serviços de suporte a distribuição outras transparências de distribuição 5: Em geral, quais os problemas advindos da existência de vários clientes fazendo acesso simultâneo a um mesmo servidor? Como esse problema geralmente é tratado?