Universidade da Beira Interior Sistemas Distribuídos - 2013/2014 Trabalho Prático Parte I - 6 valores. - Trabalho a realizar por grupos de 2 ou 3 alunos. - Entregar o relatório em papel até às 17 horas de 23 de Maio. - Envio do código do projeto, até às 24 horas de 23 de Maio. Enunciado: Pretende-se criar uma aplicação para vender produtos usados. Para isso, pretende-se um processo servidor (Catalogo) que irá registar os processos interessados em vender produtos de uma determinada categoria (Clientes). Cada cliente é responsável por vender os seus produtos. Para isso regista-se no Catalogo indicando o seu IP, o porto onde ficará à espera de ligações de clientes interessados nos seus produtos, e a categoria de produtos que pretende vender. Quando um Cliente pretende adquirir um determinado tipo de produto, solicita ao Catalogo a lista de Clientes que vendem produtos dessa categoria, recebendo os seus endereços (IP + porto). O Cliente em seguida entrará em contacto com os Clientes que desejar. O processo Catalogo deverá ser um servidor RMI, com um objeto remoto que permita: - registar clientes para vender uma determinada categoria de produtos; - obter uma listagem de todas as categorias existentes; - obter a lista de contactos dos clientes que vendem determinada categoria de produtos. Quando um Cliente solicita quais os clientes que vendem uma determinada categoria, mas essa categoria não existe no catálogo, esse cliente deve ficar registado de maneira a receber um callback do Catalogo quando algum cliente se registar para vender essa categoria; - retirar um Cliente do Catalogo. Os processos do tipo Cliente deverão ser clientes RMI do processo Catalogo e ao mesmo tempo ser servidores multi-threaded (com comunicação por Sockets) para os outros clientes. Um processo Cliente ao receber a lista de endereços irá depois contactar o(s) processo(s) dessa lista. Cada processo Cliente deverá enviar aos clientes interessados uma lista dos produtos que têm para venda e respetivo preço. Aos Clientes que o solicitarem devem enviar um contacto (telefone ou mail) para posterior negociação/venda. Universidade da Beira Interior Sistemas Distribuídos - 2013/2014 Os processos clientes terão uma interface de texto com o utilizador. Os dados do processo Catalogo e de cada processo Cliente devem ser guardados de forma persistente em ficheiros de objetos. O relatório deverá descrever a arquitetura da aplicação, a estrutura do código e um pequeno manual de utilizador. No final, cada grupo deve: 1 - Enviar por e-mail o código fonte do trabalho usando o endereço: [email protected] 2 - O “subject” do mail deverá conter o número de aluno de cada membro do grupo, sendo da forma TP-a99999a99999. 3 - Entregar o relatório em papel.