Thread [RESOLVIDO]

10 respostas
F

pessoal tenho que fazer uma classe que fique rodadndo no servidor a cada 3 segundos por exemplo isso é possivel usando jsp e se for como que eu posso fazer, tentei usar rmi mas nao eh o que eu quero… em Desktop isso chama-se thread!

alguém pode me indicar o caminho das pedras?

10 Respostas

Pedrosa

De uma olhada em Ajax Reverso:
http://getahead.org/dwr/reverse-ajax

ddduran

a mesma classe que você usou no seu desktop você pode executar, por exemplo, no init de uma servlet sua…

é com thread da mesma maneira.
Seria algo como um while(true) e um Thread sleep de 3 segundos

F

tu pode me dar um exemplo mostrando a mesma mensagem… bem simples?

ddduran

No init da sua servlet, ou no main de uma classes que você queira chamar no bash do seu servidor/aplicação, ou onde quer que seja :stuck_out_tongue:

Thread t = new Thread(new MinhaRunnable());
		t.start();

ai o metodo da sua classe Runnable

public void run() {
		while(true){
			// faço algo
			try {
				Thread.sleep(3000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}

	}
F

Cara, desculpa a insistencia… mas to determinado a conseguir isso pra web…

crio essas duas classes compilo e coloco em uma pastinha chamada classes dentro de web-inf…

depois no meu index apenas chamo a ben run.class por exemplo?

isso?

T

Veja como você pode configurar o Quartz no seu web container.

E

cara da uma olhada nisso…

http://www.opensymphony.com/quartz/

F

olha só pessoal o que eu consegui fazer:

minha thread:

import java.awt.Graphics;
import java.util.Date;

public class Clock extends java.applet.Applet implements Runnable {

    Thread clockThread;

    public void start() {
	if (clockThread == null) {
	    clockThread = new Thread(this, "Clock");
	    clockThread.start();
	}
    }
    public void run() {
	while (clockThread != null) {
	    repaint();
	    try {
		clockThread.sleep(1000);
	    } catch (InterruptedException e){
	    }
	}
    }
    public void paint(Graphics g) {
	Date now = new Date();
	g.drawString(now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds(), 5, 10);
    }
    public void stop() {
	clockThread.stop();
	clockThread = null;
    }
}

meu index.html

<%@ page import="clock.*"%>
<html>
<head>
<title>Threads</title>
</head>
<body>
testando thread<BR><BR><BR><BR>
<table width="68" border="1" align="center">
  <tr>
    <td width="60"> <applet code="Clock.class" height="10" width="60">
      </applet></td>
</tr>
</table>
</body>
</html>

Aqui está rodando basta compilar o codigo da therad e salvar como Clocklembrando que Clock e nome da minha classe que esta dentro de WEB-INF/classes/clock

T

Não entendi como uma applet (algo que roda no browser, e que deve ser copiada para fora do diretório WEB-INF/classes senão não pode ser acessada pelo browser) vai resolver o problema do servidor, e ainda mais copiada para WEB-INF/classes.

Não entendi mesmo.

F

thingol!

Eu quis dizer que o meu problema se resolveu assim, pois eu precisava de tempos em tempos buscar algo no banco (por exemplo) e imprimir na tela sem ter que recarrega-la totalmente, tbm não posso usar ajax e nem java script...

com um aplett eu consegui, tbm não tenho certeza de que este seria o melhor modo para ser feito…

estou aberto a sugestões, se alguém tiver um modo mais facil ou viavel via programalçao e não libs prontas nem frameworks…

OBS.: tbm não gostei da solução pois quem não tem o JRE instalada na maquina terá de instalar a mesma para rodar o aplett.

Criado 10 de dezembro de 2007
Ultima resposta 11 de dez. de 2007
Respostas 10
Participantes 5