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 |
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 rodando no
JBoss Application Server. Use a
versão
5.0.1.GA do JBoss Application Server, que inclui o JBoss Messaging.
Embora o JBoss Messaging faça parte do JBoss Application Server, a
distribuição desse servidor não inclui os exemplos de utilização nem a
documentação do JBoss Messaging. Os exemplos e a documentação estão na
distribuição do JBoss Messaging. Para obtê-los, baixe a versão
1.4.2.GA-SP1 do JBoss Messaging. (Essa é a versão mais recente do JBoss
Messaging. Na verdade você não precisa dela. A versão do JBoss Messaging que é
distribuída juntamente com o servidor JBoss 5.0.1.GA é perfeitamente adequada
para este EP, embora seja um pouco mais antiga.) Veja o subdiretório
examples
da
distribuição do JBoss Messaging. Para rodar os exemplos no JBoss Application
server você precisará fazer alguns ajustes. Primeiro entre no diretório
examples
da distribuição do JBoss Messaging e execute o seguinte
script:
for i in `find . -name build.xml` do mv $i $i.bak cat $i.bak | sed 's/value="messaging"/value="default"/' | sed 's/jboss-j2ee/jboss-javaee/' | grep -v jdk50 >$i doneDepois copie para o subdiretório
server/default/deploy
da distribuição do JBoss Application Server (jboss-5.0.1.GA
) o
arquivo jbm-examples-destinations-service.xml
que está no
subdiretório examples/destinations
da distribuição do JBoss
Messaging. Agora é só ativar a configuração default do servidor de aplicações
(chamando ./run.sh
a partir do subdiretório bin
),
ir para outra janela de shell, fazer a variável de ambiente
JBOSS_HOME
apontar para o diretório raiz da distribuição do JBoss
Application Server e rodar os exemplos. Estude os exemplos queue
e topic
, que devem ajudar você a fazer este EP. Olhe também a
documentação incluída na distribuição do JBoss Messaging.
Bom trabalho!
ep2-
<nomes-dos-membros-do-grupo>.tar.gz
ou
ep2-
<nomes-dos-membros-do-grupo>.zip
.
Por exemplo:
ep2-joao-maria.zip
. No nome do arquivo devem ser
omitidos os acentos dos nomes dos
membros do grupo. Além disso, a separação entre
palavras não deve ser feita com espaços. Ou seja,
o arquivo não deve se chamar "ep2-joão-maria.tar.gz
"
nem "ep2 joao maria.tar.gz
".ep2-joao-maria
.) Todos os arquivos
desempacotados devem estar dentro desse diretório.build.xml
para a ferramenta
ant
. O build.xml
deve incluir as
seguintes funções (targets, ou alvos):
compile
" - Este deve ser o alvo default,
que automatiza a geração do programa cliente.deploy
" - Este alvo implanta o sistema
de bate-papo na configuração "messaging" do servidor de
aplicações. Implantar o sistema de bate-papo significa
copiar para o diretório
${JBOSS_HOME}/server/default/deploy
todos os arquivos necessários para o funcionamento do
sistema.run
" - Roda o programa cliente.undeploy
" - Este alvo desimplanta o
sistema de bate-papo da configuração "messaging" do
servidor de aplicações. Desimplantar o sistema de
bate-papo significa remover do diretório
${JBOSS_HOME}/server/default/deploy
todos os arquivos copiados pelo alvo
deploy
.ant compile
" e "ant
deploy
", deve ser possível rodar (via "ant
run
") múltiplas instâncias do cliente, possívelmente
em máquinas diferentes. O "ant undeploy
"
restaura o estado original da configuração "messaging" do
servidor de aplicações.
README
, com as seguintes informações:
ant
, esta parte deve
detalhar o que precisa ser feito.README
deve ser de texto puro
(ASCII). Quem preferir, pode colocar num documento separado
a explicação sobre a estrutura dos programas e deixar no
README
só o receituário para geração e
execução. Esse documento separado, se existir, tanto pode
ser um arquivo de texto ASCII como um arquivo pdf. (Não
quero arquivos doc em formato MS-Word.)