Exercício-Programa 2: Sistema de Bate-Papo Usando JMS

Sistemas de Middleware - Segundo Semestre de 2007

Descrição

Este exercício-programa consiste no criação de um sistema simples de bate-papo semelhante ao do EP1, porém agora baseado em JMS. Será utizada uma implementação de JMS que roda num servidor de aplicações Java EE.

O trabalho está dividido em duas partes: uma básica e uma extensão. A nota final está relacionada com as funcionalidades implementadas. Veja abaixo.

Especificação

Como requisitos básicos, o sistema deve oferecer as seguintes funcionalidades: (valor: 8,5)

Recursos adicionais (opcional):

Arquitetura / Implementação

Desta vez você não terá de escrever um "servidor de bate-papo", pois esse papel será desempenhado pela implementação de JMS rodando no servidor de aplicações Java EE. Mais precisamente, o papel de "servidor de bate-papo" será desempenhado por um conjunto de filas e tópicos JMS implantados no servidor de aplicações. Assim sendo, você implementará apenas a aplicação cliente.

Use o mapeamento natural entre conceitos do sistema de bate-papo e conceitos JMS:

sistema de bate-bapo JMS
 sala de bate-papo   tópico 
 entrar numa sala de bate-papo   fazer uma assinatura (subscription) de um tópico 
 usuário do sistema de bate-papo   fila de mensagens 
 enviar uma mensagem específica para um usuário   enviar uma mensagem para a fila associada ao usuário 

Note que o JMS proíbe acessos concorrentes a uma mesma sessão. (Veja as seções 2.8 e 4.4.6 da especificação do JMS 1.1.) Uma consequência disso é que uma sessão JMS com um MessageListener (que recebe chamadas assíncronas) não deve ser usada por uma thread que fica enviando mensagens. Para fazer a recepção (via MessageListener) e o envio de mensagens concorrentemente são necessárias duas sessões separadas: uma com o MessageListener e a outra empregada pela thread enviadora de mensagens.

O JMS não inclui interfaces para criação de filas ou tópicos por programas. Filas e tópicos são "objetos administrados", que (no JMS padrão) devem ser criados pelo administrador do sistema, usando ferramentas ou procedimentos específicos da implementação de JMS utilizada. Algumas implementações de JMS oferecem, entretanto, APIs não padronizadas que permitem a criação de filas ou tópicos por programas. A funcionalidade de registro dinâmico de novos usuários e de novas salas de bate-papo requer uma API assim. Essa funcionalidade não pode ser implementada empregando-se apenas as interfaces "oficiais" do JMS.

O sistema deve ser implementado em Java, com o JBoss Messaging versão 1.4.0.GA rodando no JBoss Application Server, versão 4.2.1.GA (ou 4.2.2.GA -- esta versão ainda não saiu, mas deve aparecer nos próximos dias). Atenção: Como a implementação default de JMS no JBoss Application Server 4.2.x não é o JBoss Messaging, você precisará baixar os dois sistemas, desempacotar o servidor de aplicações e depois instalar o JBoss Messaging sobre o servidor de aplicações. Siga as instruções para instalação automatizada e (a menos que você tenha um cluster de servidores) ignore todos os ítens relacionados com clustering. Ou seja, é só rodar "ant -f release-admin.xml" (Neste ponto das instruções há um errinho tipográfico: "aml" em vez de "xml"). Depois de fazer isso, vá direto para os passos adicionais para completar a instalação, ponha o servidor de aplicações no ar, verifique se o JBoss Messaging funciona corretamente e olhe/rode os exemplos incluídos na distribuição do JBoss Messaging.

Bom trabalho!

FAQ

Questão 1: Pode fazer em grupo?
Resposta: Este trabalho deve ser feito em grupos de uma ou duas pessoas.

Questão 2: Pode haver grupo com mais de duas pessoas?
Resposta: Não.

Questão 3: O que exatamente deve ser entregue?
Resposta: Veja abaixo. Com algum atraso, incluí essas informações sob o ítem "Entrega".

Entrega

O trabalho deve ser entregue até 24/10 31/10, através do sistema Paca/Moodle.

Entregue um arquivo tar.gz ou zip que satisfaça os seguintes requisitos:

Valid CSS! Valid XHTML 1.0! Last modified: Sat Oct 27 14:11:31 BRST 2007