Pessoal, procurei muito e não achei uma boa solução, portanto vou abrir um tópico para ver se alguém pode me ajudar.
Estou desenvolvendo uma aplicação com SWING que se conecta a um banco remoto. Agora estou incluindo um controle que mostra o status da conexão (Online/Offline)… ocorre que em caso de queda da conexão (problemas na rede) a aplicação não pode parar e deve funcionar localmente. Como estou utilizando JPA, é uma EntityManagerFactory para cada conexão (local e remota), ou seja, tenho 2 persistence-unit, uma para cada conexão.
Para exibir na tela se a aplicação está online ou offline eu criei 2 icones que indicam o status da rede e coloquei um timer que fica sempre checando a conexão remota… dessa forma eu mostro 1 icone quando está onlie e quando ocorre falha (ou seja cai a rede) troca o icone offline.
O problema é que no caso de queda da rede, demora um certo tempo (em torno de 10 a 15 segundos) e neste tempo a aplicação fica travada, acho q isso ocorre pois o JPA está tentando utilizar uma EntityManagerFactory que perdeu a conexão, pois este é o tempo que demora para a exception ser disparada.
Enfim, gostaria de mostrar ao usuario um dialago do status de processamento quando isso acontecer… na hora q cair a conexão teria q mostrar uma mensagem para o usuario entender q o sistema não travou. E talvez tambem em outros momentos onde o sistema fique processando alguma coisa, como por exemplo na sincronização… etc.
Já tenho um splash que está funcionando legal quando a aplicação é iniciada, porém o splash não é executado automaticamente, para ele aparecer eu preciso chamar:
SplashScreen.getInstance().setVisible(true);
Acontece que nessa hora da queda da conexão, eu só sei disso quando dispara o exception, e o exception só dispara depois dos 15 segundos, portanto, mesmo colocando a chamada do splash no catch do tratamento deste exception não da certo.
Gostaria de saber qual a melhor maneira de controlar esses “status de processamento”.
Desde já fico muito grato se alguem puder me ajudar.