Alguém poderia me dizer se existe variavel application em java?
Como usa-la?
[]´s
Alguém poderia me dizer se existe variavel application em java?
Como usa-la?
[]´s
Como a pergunta está no fórum de Servlets/JSP, vou supor que você está falando sobre variável application no JSP…
Neste caso, existe sim. Ela é do tipo ServletContext, portanto para usá-la é só chamar os métodos da classe ServletContext, que você pode verificar na API.
Suponho que vc esteja querendo algo análogo ao objeto Application do ASP.
É justamente o q o bani falou. O objeto Application no ASP equivale ao objeto ServletContext em servlet.
Se quiser algo como o Application_OnEnd() e Application_OnStart(), vc precisa criar um ServletContextListener.
Para setar e obter dados de um ServletContext use os métodos setAttribute e getAttribute.
Opa,
soh completando a resposta da galera, quando vc utiliza o objeto ServletContext devolvido pelo metodo getServletContext da classe javax.servlet.GenericServlet, vc precisa sincronizar o acesso ao metodo set, por que esse objeto eh compartilhado entre os usuarios, logo faca:
... doPost (.., ...){
...
String valor = "soh!!";
ServletContext ctx = getServletContext();
synchronized (ctx) {
ctx.setAttribute("key", valor);
}
}
oi Claudio
isso de sincronizar os acessos ao context eh soh uma dica neh? dependendo da aplicacao voce precisa, dependendo nao…
sem contar que isso vai depender do servlet container. tem servlet container que usa um HashMap por traz, tem container que usa Hashtable, ai voce nao precisaria. Ja tive esse problema quando mudei to tomcat 3 para o 4 (o 3 eh table, o 4 eh map)
mas com certeza uma boa recomendacao
Oi Paulo, bem na verdade, pensando que nossa aplicacao nao deve depender de produtos e a solucao varia para cada implementacao, nao podemos contar com essa funcionalidade, eh melhor sempre sincronizar o acesso ao Context e Session.
E isso nao depende bem de aplicacao, depende do que vc vai usar!
Porque se vc usa o session ou o context na sua app (o que acontece em 99,99% dos casos) entao pode ser que dois usuarios “setem” valores simultaneamente, principalmente em maquinas multiprocessadas.
E eu tava esquecendo, a sincronizacao desses objetos cai na prova de WebDeveloper.
[Mais uma dica]
Aproveitando para dar mais uma dica, ja que estamos falando de context e session, eh extremamente importante que os objetos que forem colocados dentro desses caras (Session e Context) sejam serializaveis (implementar java.io.Serializable) porque muitos containers armazenam a session/context em disco se precisarem de memoria.
Abraco,