Classe Java sempre a correr

13 respostas
Claudia.pt

Olá pessoal!
Estou com o seguinte problema. Tenho uma Servlet q interpreta um XML e tira valores, passa-os a um bean q os escreve em BD.
Mas n verdade eu n preciso de uma app J2EE mas sim de uma classe q corra em background e seja executada de x em x minutos.
Como posso fazer isso?
Ideias?
É urgente por isso agradeço ajuda!
Obrigada,
Cláudia

13 Respostas

furutani

Aprenda usar o Quartz - http://www.opensymphony.com/quartz/

Claudia.pt

Ok.
Mas precisava de uma solução mais rápida, ie, sem estudar primeiro.
Existe?
Claudia

furutani

Usa uma thread então, mas não se usa thread numa aplicação web.
Sem estudar fica dificil fazer qualquer coisa!

Claudia.pt

É verdade… sem esforço n se vai a lado nenhum mas tenho de fazer isso pra ontem.
Embora ainda seja uma app web, vou converter numa unica class.
Pode ser n pode?
Do tipo:
//Lê XML
//Pega valores
//Criar conexao à BD
//Escreve BD
Claudia

kaique

Usa uma thread então, mas não se usa thread numa aplicação web.
Sem estudar fica dificil fazer qualquer coisa!

Pq??

[]'s

kaique

Pq??

Obs.: reformulando a pergunta para nao deixar duvidas… :stuck_out_tongue:

[]'s.

Claudia.pt

futurani como posso saber mais sobre threads?
Obrigada,
Cláudia

Arcadex

Cláudia,

vc está querendo fazer e está esperando aqui no GUJ que alguém te ensine uma mágica.
Sinto desapontá-la mas não vai conseguir sem estudar.
A melhor maneira é como furutani falou. Usando o Quartz. (O java nativo tb consegue fazer isso)

Não tem como vc fazer algo sem saber fazer.
Faça assim:

Crie a classe, implemente tudo como se fosse chamado por um botão (uma coisa de cada vez). Pelo que vi sua dúvida é apenas na forma de automatizar a rotina, certo ?

Bem, depois de tudo pronto, vai conseguir resolver seu problema em pouco tempo. Te garanto.
Um tutorial, ou um exemplo apenas do quartz vai te ajudar a squedular essa sua rotina. Não é complicado.

Abraço.

Claudia.pt

Bem, nunca vim ao GUJ com a esperança q alguém me resolvesse os meus problemas mas sim q me indicassem as possibilidades de os resolver.
Geral/ peço dicas e depois vou investigar…
E depois coloco sempre a solução, pois pretendo dar o meu contributo e possivel/ ajudar alguém com a mesma duvida.

Assim, aqui vai… Pra pôr uma classe java a correr de x em x tempo:

public class xyz extends Thread {
public static void main(String[] args) throws  InterruptedException {

		while(true)
		{
		   // código
                  Thread.sleep (18000); // milliseconds
	         }// End while
	
}// End main
}// End class

Cláudia

Arcadex

Oi Claudia, Tudo bem ?

O amigo lá de cima sugeriu usar thread. Mas o seu problema, na minha opnião, não tem nada a ver com Thread. Na verdade o comentário dele mais atrapalhou do que ajudou.

Vc tem seu método pronto ?
Vc quer que ele rode automaticamente de tempo em tempos ?

Thread não fará isso por você. Como vc vai chamar a Therad ?
(O Quartz faz isso automaticamente pra você)

Claudia.pt

Mas está a funcionar correcta/!!
Claudia

Arcadex

Ok Claudia, mas me responde a pergunta.

Como sua thread está sendo chamada ?

Vc disse:

Claudia.pt

A primeira vez corro o programa invocando: java prog
Depois como existe um cile while sempre true a classe irá correr sempre.
Pra ser apenas de x em x tempo tenho Thread.sleep (18000); // milliseconds

Não sei se respondi à sua pergunta…
Cláuida

Criado 4 de janeiro de 2007
Ultima resposta 8 de jan. de 2007
Respostas 13
Participantes 4