p rogramaÇÃo d istribuÍda primeira fase da aplicação distribuída: gestão de salas joão gomes...

33
PROGRAMAÇÃO DISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco Andrade Nº 21190335 1

Upload: internet

Post on 18-Apr-2015

107 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

1

PROGRAMAÇÃO DISTRIBUÍDAPrimeira Fase da Aplicação Distribuída:

Gestão de Salas

João Gomes Nº 21150324Marco Andrade Nº 21190335

Page 2: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

2

ESTRUTURA DE COMUNICAÇÃO

Int code, inteiro que transporta o código referente a operação que se pretende efectuar.

T Message, campo genérico que encapsula os dados necessários para processar a operação descrita pelo campo code.

Page 3: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

3

CÓDIGOS DE COMUNICAÇÃO Códigos 0->50, cliente para servidor

1 -> Login 2 -> Pedir listagem de salas 3 -> Pedir Listagem de reservas de salas do utilizador

actual 4 -> Pedir para registar reserva 5 -> Logout 6 -> Pedir para cancelar reserva 7 -> Pedir listagem de todas as reservas

Page 4: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

4

CÓDIGOS DE COMUNICAÇÃO CONT.

Códigos 50->100 servidor para o cliente sucesso 99 -> Login efectuado com sucesso 98 -> Preparar para receber listagem de salas 97 -> Preparar para receber listagem de reservas de

salas do utilizador actual 96 -> Sala reservada com sucesso 95 -> Listagem de todas as reservas

Page 5: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

5

CÓDIGOS DE COMUNICAÇÃO CONT.

Códigos 50->100 servidor para o cliente, falha 50 -> Login inválido 51 -> Utilizador sem salas reservadas 52 -> Sala já reservada 53 -> Falhou pedido para cancelar reserva

Page 6: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

6

CÓDIGOS DE COMUNICAÇÃO CONT.

Códigos enviados quando há alterações 70 ->Alterações nas reservas 71 -> Alterações nas salas

Page 7: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

7

LIGAÇÃO

Servidor aceita ligação e lança thread

User: Username, password

Cliente Estabelece Ligação via TCP

Cliente envia pedido de autenticação

Code 1, message: User

Code: 50/51Login ok=50Login fail=51

Login ok, cliente lança thread ligação

Login Fail, mostra mensagem ao utilizador

ClienteServidor

Page 8: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

8

LIGAÇÃO

Após verificação das credenciais do utilizador, o programa cliente lança uma Thread que vai receber todas respostas do Servidor.

O cliente Gráfico é responsável por enviar todos os pedidos para obter a informação que necessita.

Page 9: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

Cliente Gráfico

Thread Ligação

Invoca método Actualiza, passando o código que recebeu do servidor

Servidor

Thread Multicast

Thread ClientConn

ection

ThreadClient

ThreadClient

.

.

.

Pedidos

Respostas

Pedido IP/Porto via Multicast

Resposta via UDP

Page 10: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

10

SERVIDOR

O servidor está implementado da seguinte forma:

Servidor

Thread Principal

Thread Multicast

Thread ClientConnection

Thread TheadClient 1

… Thread TheadClient N

Page 11: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

11

THREADS NO SERVIDOR

Thread Principal: Esta thread é responsável por lançar duas

threads: a thread ClientConnection e threadMulticast, esta é ainda responsável pela gestão da consola onde é possível efectuar operações de gestão de salas, utilizadores e reservas.

Thread Multicast: Esta thread é responsável por ficar à escuta de

pedidos multicast de modo a dar suporte a resolução do IP do servidor via multicast, no IP 127.0.0.1 porto 9090. Esta thread responde apenas a mensagens com o conteúdo “IP”

Page 12: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

12

THREADS NO SERVIDOR CONT.

Thread ClientConnection: Esta thread é responsável por aceitar os pedidos

de ligação de clientes e pedir a classe Data para registar o socket do cliente e o ID da thread que o vai atender.

Thread ThreadClient: Esta thread é responsável por atender todos os

pedidos de clientes bem como responder a esses pedidos. Esta thread serve apenas para descodificar as mensagens vindas do cliente e fazer os respectivos pedidos à classe Data que é quem trata de toda a informação. Após obter a informação de Data codifica a informação obtida e envia ao cliente.

Page 13: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

13

CLIENTE

O cliente está implementado da seguinte forma:

Cliente

Janela Login

ClienteGráfico

Thread Cliente

Page 14: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

14

JANELA DE LOGIN

Quando o programa é iniciado é lançada uma janela modal que permite ao utilizador procurar por um servidor através de multicast fazer e fazer Login.

Após um Login com sucesso esta janela é fechada e é lançada uma Thread (ligação) que vai receber todas as mensagens enviadas do cliente para o servidor.

É ainda disponibilizado ao utilizador uma janela gráfica para efectuar as operações que desejar.

Page 15: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

15

COMUNICAÇÃO THREAD LIGACAO->CLIENTE GRÁFICO

Quando a Thread ligação recebe uma mensagem vindo do cliente invoca o método Actualiza(int code) que actualiza os dados conforme o código que recebeu por parâmetro.

Page 16: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

16

ARMAZENAMENTO DE DADOS

Os dados são armazenados de forma serializada, em três .txt, estes ficheiros são: Reserves.txt, armazena os dados referentes às

reservas; Rooms.txt, armazena os dados das salas

disponíveis no sistema; Users.txt, armazena os dados dos utilizadores

que podem aceder ao sistema.

Page 17: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

17

SERVIÇO DE CONSULTA DE SALAS EM JAVA RMI

Page 18: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

18

IMPLEMENTAÇÃO DO SERVIDOR COM JAVA-RMI

Servidor

Thread Principal

Thread Multicast

Thread ClientConnecti

on

Thread TheadClien

t 1

… Thread TheadClie

nt N

Serviço JAVA-RMI

server_observer

Page 19: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

19

FUNCIONAMENTO

Lookup ao JAVA-RMI

Cliente Regista-se para receber notificações

Serviço notifica o cliente sempre que ocorre uma alteração de salas no período requerido

List de Strings com os períodos em que as salas estão reservadas

Cliente Pede Lista de salas Disponíveis

Retorno com o resultado da pesquisa

Cliente remove-se de recepção de notificações

Page 20: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

20

CLIENTE

O cliente dispõe de duas opções de pesquisa: A primeira “Consultar salas disponíveis”

devolve um ArrayList com as salas disponíveis num determinado período de um dia.

A segunda “Registar para receber notificação”, regista-se no serviço para ser notificado sempre que há uma alteração na reserva de salas num determinado período. Este apresenta uma lista com uma entrada para cada tempo em que uma sala se encontra indisponível.

Page 21: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

21

SERVIÇO

O serviço é lançado pelo servidor, e recebe uma referencia para a classe data para poder invocar as funções nela contida, bem como ter acesso aos dados das salas. Por outro lado a classe data recebe também um referencia para o serviço JAVA-RMI para o poder notificar sempre que há uma alteração nas reservas de salas.

Page 22: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

MANUAL DO UTILIZADORServidor

Cliente

Page 23: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

INICIAR APLICAÇÃO

Para inicial servidor ou um cliente basta executar o batch files RunServer.bat e RunClient.bat respectivamente que se encontram na pasta do projecto.

Page 24: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

SERVIDOR

A aplicação servidora trabalha em modo consola e assim teremos que ter uma noção acerca dos comandos das seguintes acções:

Adicionar utilizadores e salasListar utilizadores, salas e reservasRemover utilizadores, salas e reservas

Em caso de alguma dúvida persistir basta inserir um comando inválido e será aprensentado um help.

Page 25: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

ADICIONAR

Utilizadores

Salas

Page 26: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

LISTAR

Utilizadores

Salas

Reservas

Page 27: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

REMOVER

Utilizadores

Salas

Reservas

Page 28: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

CLIENTE

A aplicação cliente trabalha em modo gráfico e assim teremos que ter uma noção acerca de alguns passos de modo a conseguir executar as acções mais importantes.

Page 29: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

CONECÇÃO AO SERVIDOR

Como podemos observar na figura verificamos que existem 3 campos a preencher, assim:a – ip do servidor;

b – porto do servidor;

c – ip multicast onde automáticamente poderemos preencher os campos a e b.

a

b

c

Page 30: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

LOGIN

Após uma conecção válida poderemos efectuar o login.d – nome do utilizador;

e – password correspondente ao utilizador.

d

e

Page 31: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

RESERVAR SALA

Nesta aba é onde podemos efectuar a reserva de uma sala ao inserir os seguintes campos:f – identificador da sala;

g – dia a reservar;

h – horário da reserva.

f

g

h

Page 32: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

CONSULTAR SALAS

Nesta aba é onde podemos consultar uma sala e assim teremos de inserir os seguintes campos:i – podemos optar por 2 métodos para consulta, por sala ou dia/hora;

j – preencher campos acerca da consulta que se pretende.

i

j

Page 33: P ROGRAMAÇÃO D ISTRIBUÍDA Primeira Fase da Aplicação Distribuída: Gestão de Salas João Gomes Nº 21150324 Marco AndradeNº 21190335 1

CONSULTAR RESERVAS

Nesta aba é onde podemos consultar as nossas reservas e cancelar e assim teremos de inserir os seguintes campos:

k – preencher campos acerca da reserva que se pretende.

k