SingleThreadModel

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

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?

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:

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:

[code]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);
}

}
[/code]

VELO

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

[quote=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[/quote]

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

Isso depende muito do caso… :roll:

Digamos que eu acesso um programa externo…

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

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:

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

Você quer fazer um lock?!?

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

[]s

[quote=pcalcado][quote=velo]
Como eu faria num caso q preciso ler um arquivo e gravar algo nele?
[/quote]

Você quer fazer um lock?!?

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

[]s

[/quote]

Ah, entaum uso os recursos de Thread…

massa!!!

VELO

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

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