Envio de mensagens entre aplicações desktop [RESOLVIDO]

Boa tarde pessoal.

Estou com um novo projeto de uma aplicação desktop onde há uma funcionalidade a ser implementada da seguinte forma:

Suponham que, em um determinado momento, X máquinas estejam utilizando a aplicação. O usuário de uma dessas máquinas efetua um cadastro em uma determinada tabela; quando isso acontecer, todas as X-1 máquinas devem receber um aviso via pop-up - com a aparência semelhante ao pop-up do MSN - dizendo que um novo registro foi gravado.

Uma das possibilidades é enviar a mensagem via UDP, que permite o uso de broadcast. O problema é que isso pode trazer problemas de configuração de firewall, etc. Além disso, UDP não fornece garantia de entrega das mensagens.

Um membro da equipe sugeriu utilizar JMS, porém nós nunca trabalhamos com isto.

Gostaria apenas de enfatizar que não estou aqui pedindo consultoria, tampouco querendo que alguém forneça algo pronto pra mim. Apenas gostaria de saber se alguém já fez algo semelhante e/ou se poderia sugerir alguma forma de fazer isso.

Obrigado pela atenção.

Se aplicação é desktop JMS ( Java Messaging Service) é o cara.
Existem implementações do JMS que conversam via HTTP embora o normal seja RMI.
Todos os Applications Servers dão suporte a JMS .

Se não estiver usando um application server… bom , ai o problema é da arquitetura que está usando. Teriamos que saber qual é.

[quote]Se aplicação é desktop JMS ( Java Messaging Service) é o cara.
Existem implementações do JMS que conversam via HTTP embora o normal seja RMI.
Todos os Applications Servers dão suporte a JMS .

Se não estiver usando um application server… bom , ai o problema é da arquitetura que está usando. Teriamos que saber qual é.[/quote]
O projeto está muito no início, então a arquitetura está em decisão ainda. Mas por enquanto, a opção é manter um cliente magro que acessa a aplicação no servidor através de EJBs.

[quote=tnaires][quote]Se aplicação é desktop JMS ( Java Messaging Service) é o cara.
Existem implementações do JMS que conversam via HTTP embora o normal seja RMI.
Todos os Applications Servers dão suporte a JMS .

Se não estiver usando um application server… bom , ai o problema é da arquitetura que está usando. Teriamos que saber qual é.[/quote]
O projeto está muito no início, então a arquitetura está em decisão ainda. Mas por enquanto, a opção é manter um cliente magro que acessa a aplicação no servidor através de EJBs.[/quote]

Certo, mas EJB é só “de ida” vc precisa algo “de volta” ou seja, vc precisa que o servidor possa invocar coisas no cliente. ( em todos os clientes ao mesmo tempo) O jeito de fazer isso é usando um serviço de mensagens ( mensageria como é chamado por ai) e o JMS é isso mesmo. Sendo que vc usa EJB quer dizer que já usa um AS logo o JMS já está disponível.

JMS é muito legal mas fico em duvida sobre a complexidade da solução.

Eu pensei em algo relacionado a threads e acesso ao banco de dados, me pareceu mais do que suficiente para o cenário relatado.

Sérgio, obrigado pelas respostas. Já estamos fazendo testes com JMS, nós nunca tínhamos mexido com esse recurso.

Aleck, nós precisamos manter a aplicação rodando do lado do servidor porque um dos requisitos é manter o cliente magro, sem lógica de negócios e sem informações de acesso a banco de dados. Pelo que andamos estudando, utilizar JMS - que como o Sérgio falou, já está disponível no AS - é a solução mais adequada.

Oi tnaires,

Já trabalhei em um sistema onde fizemos este tipo de coisa.

Utilizamos o JMS (ActiveMQ) e deu tudo certo, o resultado ficou bastante interessante, muito embora se eu fosse fazer de novo acho que mudaria algumas coisas, nada de muito grave.

Como já disseram antes, tem que tomar cuidado com a complexidade, mas se vcs estudarem um pouco do JMS e construir componentes para cuidar desta parte (as mensagens) acho que não terão muitos problemas. Aliás se vc estiver procurando um exercício para praticar orientação a objetos e o seu sexto sentido (rsrsrsrs) eis a sua grande chance.

Se vc caprichar na estrutura, vc irá conseguir não só mostrar um popup, mas atualizar os campos do formulário, causando um efeito muito bacana.

DICA: Faça um protótipo bem pequeno antes, para vc e a equipe se concentrar exclusivamente na arquitetura da solução desta questão e extrair os componentes necessários. Neste caso em específico não esqueça de escrever em algum canto o funcionamento desta solução, pois passado alguns dias vc corre o risco de esquecer como a coisa tem que ser e errar na hora de ajustar ou melhorar os componentes.

flws

fantomas,

Seu relato e sua dica serão de valor inestimável para nós! Muito obrigado por compartilhar sua experiência.
Abraços

Opa,

Conseguimos construir o protótipo. Estudamos o básico de JMS e aprendemos a realizar as configurações no Weblogic, que é o servidor de aplicação utilizado aqui na empresa.
Mais uma vez agradeço a ajuda de todos!
Abraços.