SingleThreadModel

13 respostas
velo

Opa pessoal,

Eu precisaria implementar a interface SingleThreadModel pra fazer um servlet multissequencia protegido.

Porém o SingleThreadModel tah drepecated, fiz uns testes e me parece que os servlet jah estaum protegidos de fabrica. Isso eh fato? Tem como desproteger?

VELO

13 Respostas

cv1

SingleThreadedModel eh uma PEEEEEEEEEEEEEEEEEEEESSIMA ideia. Se voce esta colocando variaveis estaticas no seu Servlet, tem alguma coisa errada mesmo, entao eh melhor corrigir a aplicacao do que tentar ir por esse lado.

Mas, antes de eu jogar a carruagem, a princesa, a abobora, o principe encantado e o gato de botas na frente dos bois… o que vc esta fazendo pra precisar de SingleThreadedModel?

velo

Estudando :oops:

Sabe, toh lendo o livro do Budi Kurniawan sobre Servlet, JSP, EJB, mas sabe como eh, o livro foi feito no java 0.75 :? veio com o Jboss 2.qualquer coisa e Tomcat da mesma era…

Mesmo assim tenho de estudar :smiley:

velo

Imagina uma aplicação assim:
tenho um contador num arquivo....
1º a minha aplicação abre o arquivo;
2º le o valor e acrescenta um;
3º grava o novo valor.

Pra isso eu ia usar a SingleThread...... tem outro jeito de resolver isso?

Olha o meu código:

public class SingleThreadServlet extends GenericServlet implements
		SingleThreadModel {

	/**
	 * Comment for <code>serialVersionUID</code>
	 */
	private static final long serialVersionUID = 3977576996266062393L;

	public void service(ServletRequest request, ServletResponse response)
			throws ServletException, IOException {

		int counter = 0;

		try {
			BufferedReader read = new BufferedReader(new FileReader(
					"counter.count"));
			counter = Integer.parseInt(read.readLine());
			read.close();
		} catch (Exception e) {

		}

		counter++;

		try {
			Thread.sleep(5000);
		} catch (InterruptedException e1) {
			e1.printStackTrace();
		}

		try {
			BufferedWriter write = new BufferedWriter(new FileWriter(
					"counter.count"));
			write.write(Integer.toString(counter));
			write.close();
		} catch (Exception e) {

		}

		PrintWriter out = response.getWriter();
		out.println("Visitor number: " + counter);
	}
}

VELO

caiofilipini

Como um contador de acessos? Se for, dá pra implementar um usando um SessionListener:

http://jakarta.apache.org/tomcat/tomcat-5.0-doc/servletapi/javax/servlet/http/HttpSessionListener.html

[]'s

velo

caiofilipini:
Como um contador de acessos? Se for, dá pra implementar um usando um SessionListener:

http://jakarta.apache.org/tomcat/tomcat-5.0-doc/servletapi/javax/servlet/http/HttpSessionListener.html

[]'s

Mas digamos que não seja… é que tipo, toh estudando… e no livro tem esse exemplo, mas essa interface tah deprecated… o q eu uso no lugar?

VELO

caiofilipini

Isso depende muito do caso… :roll:

velo

Digamos que eu acesso um programa externo…

Ou esse caso mesmo do contador, acesso a um arquivo…

cv1

Cara, vc esta esquentando a cabeca a toa :wink:

SingleThreadModel foi deprecado por bons motivos, e se ninguem chiou ate agora, eh pq tem alternativas pra todos os casos. :slight_smile:

velo

Pois eh, mas num sei as alternativa :frowning: :frowning: :cry: :cry:

Como eu faria num caso q preciso ler um arquivo e gravar algo nele?

VELO

pcalcado

Você quer fazer um lock?!?

http://www.guj.com.br/java.artigo.43.1.guj

[]s

velo

pcalcado:
velo:

Como eu faria num caso q preciso ler um arquivo e gravar algo nele?

Você quer fazer um lock?!?

http://www.guj.com.br/java.artigo.43.1.guj

[]s

Ah, entaum uso os recursos de Thread…

massa!!!

VELO

cv1

Lembrando que voce sempre pode fazer isso FORA do servlet. A humanidade e as focas (a foquidade?) agradecem :smiley:

velo

Inda bem, ou q pena, sei lah, q esse projeto q começo daqui duas semanas não vai incluir as foquinhas, ia ser + uma coisa pra eu aprender :smiley:

VELO

Criado 25 de janeiro de 2005
Ultima resposta 27 de jan. de 2005
Respostas 13
Participantes 4