Temporizador de Tarefas

Galera bom dia,

Seguinte estou com o seguinte problema, eu tenho uma tela em java que de 15 em 15 minutos ele faz um select em algumas maquinas da minha rede e insere os dados em um banco oracle.
Porem se ele conecta na maquina e começa a buscar os dados e por algum motivo a maquina desconecta ou perde conexão, pois algumas utilizam wireless, o sistema simplesmente trava, na verdade a thead para naquela maquina e nao continua o processamento, entao eu queria definir por exemplo pra cada maquina eu defino que tenho um tempo de 2 minutos ,m se esgotar esses dois minutos eu paro de buscar os dados e pulo pra proxima maquina, assim evito de o sistema travar a busca em um so , e por consequencia parar de coletar,

porem nao estou dando conta de fazer isso … alguem pode me ajudar!!!

Um detalhe a thread, eu estou usando ela recursivamente, e se utilizo o metodo interrupt, no windows esse metodo não funciona corretamente;…

não é possivel configurar o timeout da conexão, evitando que a aplicação trave?

Então… mas assim eu não to usando java web… nesta aplicação é uma aplicação desktop, e eu o que eu preciso é realmente definir um timeout da aplicação, mas é justamente isso que não sei como fazer…

Para evitar que sua aplicação trave, crie uma thread quando for tentar a conexão com as maquinas.
Como voce esta conectando nas outras maquinas? Você disse que faz um select nas outras maquinas, como funciona isso?

Entao, o que acontece é o seguinte, aqui na empresa a gente tem uns programas para ponto de venda que possuem um banco de dados SQL SERVER (LOCAL) nas estações, e nos temos um outro software que faz a ronda nestes PDV e assim ele traz as vendas do banco local e insere no oracle, porem essa “ronda” depende de um operador, entao pode ser que ele faça uma de manha e outra somente a tarde, o problema disso é que se por exemplo uma maquina por ventura queima o HD eu perco todas as informações de venda daquele determinado dia.

O que eu fiz é um sistema pra de 15 em 15 minutos buscar essas informações, assim caso a maquina queima eu perco no maximo 15 minutos de informação.

Bom o que faço é o seguinte eu tenho uma thread pra controlar os 15 minutos, quando acaba os 15 minutos eu entro em uma rotina pra ler todos os pdv’s ativos, e dai eu conecto no SQL SERVER deste pdv via jdbc pra buscar as informações… o problema é justamente quando eu conecto em um e por ventura ele trava , dai ele não consegue terminar esse processo e assim o sistema fica travado naquele pdv … entao o que eu quero é definir que a maquina tem no maximo 2 minutos para finalizar a conexão, caso esses 2 minutos estoure eu quero forçar a finalização desta conexão…

eu verifiquei a função setLoginTimeout no inicio da conexão… porem não funcionou da maneira que esperava, ou seja ele nao matou a conexão sozinho…

você precisará estudar a especificação do banco, para entender como configurar o timeout da conexão.

statement timeout: http://download.oracle.com/docs/cd/E12840_01/wls/docs103/jdbc_admin/jdbc_datasources.html#wp1170721
login timeout: http://msdn.microsoft.com/en-us/library/ms378956.aspx

para evitar que sua aplicação trave, crie uma thread (ex: uma classe que extend Thread),
no momento que for conectar ao banco:

main thread (espera as thread filhas - wait / notify)
|------------------> thread filha (conecta no banco)
|------------------> thread filha (conecta no banco)
|------------------> thread filha (conecta no banco)

esse esquema de threads garante que sua aplicação não vai ficar ‘travada’, esperando a conexão com o banco,
e permite que sua aplicação se conecte em várias estações de trabalho ao mesmo tempo, aumentando consideravelmente a performance.

ok vou dar uma estudada nisto e vou tentar implementar com threads nas classes de conexão qq duvida eu volto a perguntar… vlw obrigado