Servlet Controlador e blocos synchronized!

4 respostas
J

Dae galera… eu tenho a seguinte divisão:

  • Para a view eu tenho os jsp’
  • Para o model tenho os objetos de negócios etc
  • E para o controler, eu tenho um servlet que trata a navegação disso tudo, faz a interção com o banco chamando os meus DAO’s etc…
    a questão é… dentro do servlet, eu acesso várias coisas… como os DAO, meus beans etc… , o que tenho que me preocupar para evitar acesso e evitar que dados sejam corrompidos??
    Explicando melhor… vou ter um sistema em que vários usuários vão acessá-lo simultaneamente… como o meu servlet vai tratar a navegação e quem chamar, o que devo colocar como “synchronized” para evitar dados corrompidos?? Eu vou ter tratamento de sessão etc… mas estava lendo algo na net e ví que posso ter problemas com vários acessos e ter dados inconsistentes!!
    Abraço!

4 Respostas

J

As inconsistencias que são tratadas com synchronized são valores de variaveis, coleções, etc… não isso aí…

Colocar synchronized nesse seu sistema, principalmente em um Servlet, vai jogar a performance lá embaixo.

J

Ok… vamos supor assim… no meu método doPost do meu servlet controlador por exemplo… eu tenho algumas variaveis declardas que foram capturadas do jsp que as chamou(vieram em um link por exemplo)… como um id… e tenho um ArrayList que vai pegar uma lista de clientes… isso pego de um DAO… dae com esse id e essa lista… eu vou dar um setAtribute nele…, essa lista e a varível tem que estar dentro do bloco synchronized ?? Como mencionei, eu vou dar um setAtribute… mas posso ter atributos que serão usados apenas internamente… eles tambem tem que ter esse tratamento?
E a duvida que rola também… ´eu tenho outras classes que vao ter estado e tal… em todas as classes… como DAO e de negocios… eu tenho que ter essa preocupação com os atributos que mantem estado e terei de coloca-los como synchronized ??
Desculpa pelas perguntas…
Abraço!!

J

Sincronização é usada para dados compartilhados entre as threads, e variaveis locais não são compartilhadas, portanto, não se pode usa-las para sincronizar as threads.

Quanto ao estado dos outros objetos, se eles forem compartilhados, sim, você deve se preocupar, mas lembre-se que tem que ser compartilhados, ou seja, a mesma instância usada por varias threads.

J

Valeu JairElton… agora entendí!!
Abraço e fica com Deus!!

Criado 3 de agosto de 2007
Ultima resposta 3 de ago. de 2007
Respostas 4
Participantes 2