Dúvida com static container web  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
AdemirPinto
Thread.start()
[Avatar]

Membro desde: 19/01/2011 13:47:06
Mensagens: 43
Offline

Pessoal,
quando eu uso o static em um atributos da minha classe se eu o altero isso reflete para outras instancias de outras requisições de outros usuários do container web?

Tipo assim:


Se eu alterar o contador para 1 e numa outra resquisição web, outro usuário verá 0 ou 1? E no caso de de outras requisições do mesmo usuário?
Olhei aqui no forum e o assunto foi discultido, mas nao achei nada no contexto de web(container).

Abraços e obrigado.
Ademir
[Email]
Cleidson
Thread.start()
[Avatar]

Membro desde: 04/01/2011 23:14:02
Mensagens: 29
Localização: Brasilia
Offline

Bom dia!

Admir,
Não irá alterar, pelo o fato do static ser uma palavra reservada para indicação que o metodo, atributo, variável etc.. são da propria CLASSE!
por isso o conteiner irá interpretar que a variável sentinela será da propria classe!

Cleidson Corrêa
Desenvolvedor de Aplicativos Web/Desktop
[WWW] [MSN]
javablue
JavaGuru

Membro desde: 16/04/2011 23:42:49
Mensagens: 223
Offline

AdemirPinto wrote:Pessoal,
quando eu uso o static em um atributos da minha classe se eu o altero isso reflete para outras instancias de outras requisições de outros usuários do container web?

Tipo assim:


Se eu alterar o contador para 1 e numa outra resquisição web, outro usuário verá 0 ou 1? E no caso de de outras requisições do mesmo usuário?
Olhei aqui no forum e o assunto foi discultido, mas nao achei nada no contexto de web(container).

Abraços e obrigado.
Ademir


Se você mudar o valor da variável static, vai mudar para todo mundo dentro do mesmo container. E como é static, não existe "instância" dessa variável, todo mundo vai acessar a mesma.

Quando é preciso hora extra, é porque algo saiu errado. Quando é preciso várias horas extras, é porque se está trabalhando errado.
el_loko
JavaEvangelist

Membro desde: 30/10/2007 12:09:43
Mensagens: 357
Offline

Ademir, tudo joia?

Quando falamos do container em si podemos usar o exemplo clássico do servlet. Quando você roda o container ele instancia as suas classes servlet's,
e para cada requisição ele não cria uma nova instancia desse servlet, apenas delega para uma outra thread independentemente do usuário.

Levando isso em consideração, se você adicionar 1 número inteiro a um método da classe que é chamado a cada requisição, o valor será incrementado.
Se o mesmo usuário fizer n requisições o valor será incrementado n vezes, à menos que você tenha um controle disso como uma restrição por IP por exemplo.

Existe um artigo publicado aqui no GUJ sobre isso:

http://www.guj.com.br/articles/121

Abs.
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team