Perda de conexão com Apache MINA

Olá pessoal.

tenho uma aplicação client/server, que usa a comunicação via TCP/IP, fazendo uso das funcionalidades do Apache MINA.

Após um tempo conectado ao servidor, e consumindo suas informações, tenho um problema de instabilidade de rede, o que faz com que meu cliente pare de receber informações de meu servidor.

Ai começam os problemas.

  1. A aplicação não recebe nenhuma notificação do tipo
  2. Consigo controlar este tipo de problema utilizando o evento sessionIdle, onde poderia realizar uma reconexão com meu servidor para dar continuidade no processo. Esta implementação tem alguns contras que seria abuso de IO, gerando assim uma queda de performance da aplicação, mas ainda assim estaria disposto a pagar este custo :o) em prol do funcionamento da aplicação.
    Mas, mais ainda, se tento apenas reconectar na aplicação, ela reconecta, porém, mesmo recebendo as informações de meu server, o evento sessionIdle continua a ser disparado.
  3. Se fecho a sessao, session.close(), após algum pouco tempo de execução da aplicação, esta se encerra sem nenhum motivo aparente.

Alguém saberia me ajudar?

Grato!
Daniel Nascimento

Olá Daniel,
Normalmente o que eu faço é enviar uma mensagem do servidor para o cliente em um intervalo pré-definido (por exemplo 30 segundos) caso o servidor não tenha enviado nenhum dado para o cliente nesse intervalo.
Desta maneira o cliente deve verificar se está sem receber nenhum dado do servidor a muito tempo (60 segundos, por exemplo), e caso esteja, reconectar.
Talvez o evento sessionIdle do Mina faça a mesma coisa, ou seja, seja disparado depois de um certo intervalo sem receber dados…
Mas, utilizando a mensagem periódica, resolve outro problema que costumo ter quando o servidor e o cliente estão distantes fisicamente. O problema é que quando o servidor e o cliente ficam muito tempo sem trocar dados a conexão simplesmente cai, mas o cliente não percebe (talvez você esteja com o mesmo problema).
Então, enviando dados periodicamente (30 segundos no exemplo acima) você acaba elimando esse problema da conexão cair por estar ociosa.
Essa solução não tem nada haver com o Mina, e eu a utilizo tanto em Java como em outras linguagens como C++.

Boa sorte,
Igor

Olá Igor!

realmente o problema que temos é o mesmo… porém, não tenho acesso a aplicação do servidor, esta é mantida por um fornecedor, e este não se dispôs a fazer alterações do gênero.

Consegui resolver com uma POG… mas ainda estou a procura de uma solução ótima.

Vlw a força.

[]s
Daniel Nascimento