Multiplos acesso aplicacao Web

Olá Pessoal,

Estou com algumas dúvidas sobre acesso a aplicaões web ? Como devo tratar vários acessos a mesma aplicacão ? Existem algum framework que já faz isso automaticamente ?

Li sobre o Struts:
O framework Struts cria somente uma instância de cada classe Action em sua aplicação. Como pode haver muitos usuários, você tem que assegurar que todas suas classes Action operem corretamente em um ambiente de multitheraded, da mesma maneira que você faria ao desenvolver um Servlet.”

Alguem pode me esclarecer isso ? Ou melhor alguem poderia fazer um Overview sobre multiplos acesso em aplicacoes Web, estou perdido!

Obrigado.

Olá cadu,

você precisa estudar sobre a arquitetura de aplicações web, mas propriamente J2EE. Quem é responsével por controlar o acesso à aplicação é o Servidor de Aplicação.

Ola,

Bom, a questão do struts é bem simples como as dos servlets… ou não, basicamente vc tem que pensar que um determinado recurso pode ser usado por varias thread ao mesmo tempo, então segue algumas regras de ouro:
1-> jamais tenha variáveis estáticas;
2-> evite ao máximo se ter variáveis de instacia;

O pq disto tudo:
pense numa classe assim:

public class Ex{
private int count=0;

pulbic int method(){
  count++;
  System.out.println("Ola mundo");
  return count;
}
}

Imagine que esta classe seja um servlet, e este metodo, method, é um doGet da vida… se for num ambiente “normal”, ou o que a gente chama de threadsave, se eu ficar invocando o metodo eu consiguirei determinar previamente o que terei de retorno, certo? certo, mas se for num ambiente multithread,eu nao terei, pq? pq imagine que cada io, para printar o “Ola mundo” leve um tempo que não podemos determinar, e imagine o cenário:
Thread 1, invoca, o count está igual a 0, dae passa pra 1, e vai fazer o io.
Thread 2 invoca, o count que está em 1 vai a 2, e faz rapidamente o io e retorna.
Thread 1 recupera o valor… 2?! saca?

Em servlet acontece isto, nos actions do struts tb?!.

BrunoCarlo ,

Valeu pela dicas, já tinha imaginado isso quanto a acessos a mesma classe, quanto a Action do Struts o que deveria ser feito para funcionar de maneira correta.

Poderia me dá um exemplo do errado (o que vc me mostrou), o que deveria ser o certo ?

Ainda nao tenho essa visão de como tratar isso. Estou seguindo o conselho de ozix e estou lendo sobre arquitetura de aplicações web, li algumas coisas por cima e ainda nao descobri nada, vou aprofundar.

Se alguem tiver algum material sobre isso ficaria muito grato.

Obrigado!

Na realidade vc não precisa fazer quase nenhum tratamento além do login na aplicação utilizando frameworks como struts.

O que vc poderia evitar é confiar em dados na sessão, pois se o usuário resolver abrir várias janelas vc pode se complicar.

Cadu, na realidade o que o Bruno Carlo falou nao faz muito sentido. Ja fiz varias aplicacoes web usando o struts como framework e nunca me impediu de usar variaves estaticas ou de instancias. Uso variaveis estaticas, geralmente do tipo Singleton para alocar algum recurso. Obviamente em casos de alteração basta protegê-las num contexto sincronizado. E variáveis de instancia na Action só causa problema quando se referirem ao mesmo objeto, acho q isso é obvio. Como todo request roda em uma thread em separado se vc tiver numa action um new ObjetoQualquer() isso nao vai afetar em nada o seu conteúdo pois em cada solicitacao ele vai se referir a um objeto diferente, podendo seus metodos de leitura e gravação serem invocados a qualquer tempo. A sessao pode nao ser threadsafe mas o request é sim.