velo
Janeiro 25, 2005, 7:57pm
#1
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
cv1
Janeiro 25, 2005, 8:09pm
#2
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
Janeiro 25, 2005, 8:12pm
#3
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
velo
Janeiro 27, 2005, 7:20pm
#4
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
velo
Janeiro 27, 2005, 7:38pm
#6
[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
velo:
o q eu uso no lugar?
Isso depende muito do caso… :roll:
velo
Janeiro 27, 2005, 7:45pm
#8
Digamos que eu acesso um programa externo…
Ou esse caso mesmo do contador, acesso a um arquivo…
cv1
Janeiro 27, 2005, 9:29pm
#9
Cara, vc esta esquentando a cabeca a toa
SingleThreadModel foi deprecado por bons motivos, e se ninguem chiou ate agora, eh pq tem alternativas pra todos os casos.
velo
Janeiro 27, 2005, 9:34pm
#10
Pois eh, mas num sei as alternativa
Como eu faria num caso q preciso ler um arquivo e gravar algo nele?
VELO
velo
Janeiro 27, 2005, 10:08pm
#12
[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
cv1
Janeiro 27, 2005, 10:09pm
#13
Lembrando que voce sempre pode fazer isso FORA do servlet. A humanidade e as focas (a foquidade?) agradecem
velo
Janeiro 27, 2005, 10:16pm
#14
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
VELO