Pessoal preciso da opinião de vocês…
Estou desenvolvendo um sistema que é um servidor de comunicação. Vários hardwares vão se conectar nele por socket (TCP) enviar mensagens em um protocolo específico e durante o período em que estiverem conectados, esses hardwares podem receber mensagens também.
A parte de comunicação em si eu ja implementei usando o Apache Mina e a parte de deserialização eu ja fiz também. Para a parte de deserialização dos pacotes eu adotei a estratégia de cada entidade saber como se serializar ou deserializar.
O Apache Mina funciona com sessões, ou seja, cada equipamento conectado tem uma sessão para si. Algumas mensagens podem ser geradas no lado do servidor para ser enviadas para os equipamentos. A pergunta é, como planejar essa parte de envio de mensagens do servidor para o cliente ?
Pensei em algumas estratégias:
[list] Transformar a entidade Equipamento em uma thread que fica fazendo pooling no Banco de dados, obtendo as mensagens que lhe é pertinente. No construtor desse objeto Equipamento eu iria passar como parâmetro uma referência a sessão responsável por tratar as suas mensagens. Assim ficaria fácil enviar as mensagens.[/list]
[list] Eu ja tenho uma classe que faz o controle dos equipamentos logados no sistema. Como essa classe ja é uma thread eu poderia colocar a complexidade de procurar as mensagens nessa classe, só precisaria pensar em alguma forma de “amarrar” um objeto Equipamento com a sua respectiva sessão. Hoje eu armazeno os equipamentos logados em um Map que a chave é o código do equipamento.[/list]
Esqueci de mencionar o fato de que, pode haver mais de uma mensagem para enviar para o equipamento, a regra de negócio deve ser desenvolvida da forma que eu envie uma mensagem, aguarde o ack, e envie a próxima mensagem (se existir).
Não sei se fui muito claro, mas qualquer dúvida só postar ai pessoal.
Valeww

