[Resolvido]Servlets x Multi Thread

Olá pessoal tudo bem?

Estava estudando servlets e vi que variaveis de instancia poderiam dar problemas …ok

Mas e variaveis construidar dentro do metodo service(ou doGet ou doPost enfim) , estas também podem ocasionar perca de informacoes?

Por exemplo o código abaixo que cria um new Contato e um new ContatoDAO, isto poderia dar problemas se varios usuarios chamassem esse metodo ao mesmo tempo?ja que o Tomcat só cria uma servlet?

[code]public class AdicionaContatoServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter pw = response.getWriter();
String nome = request.getParameter(“nome”);
String email = request.getParameter(“email”);
String endereco = request.getParameter(“endereco”);
String dataEmTexto = request.getParameter(“dataNascimento”);
Calendar dataNascimento = null;
try {
Date date = new SimpleDateFormat(“dd/MM/yyyy”).parse(dataEmTexto);
dataNascimento = Calendar.getInstance();
dataNascimento.setTime(date);
} catch (ParseException e) {
pw.println(“Erro ao converseter a data”);
e.printStackTrace();
}
Contato c = new Contato();
c.setNome(nome);
c.setEmail(email);
c.setEndereco(endereco);
c.setDataNascimento(dataNascimento);
ContatoDAO dao = new ContatoDAO();
dao.adiciona©;

	pw.println("<html>");
	pw.println("<body>");
	pw.println("Contato:  " + c.getNome() + " adicionado com sucesso");
	pw.println("</body>");
	pw.println("</html>");
	
}	

}
[/code]

Ninguem sabe a resposta ou a pergunta esta mal formulada? quase 20 views e nada…

sei que ninguem tem a obrigacao de responde , mas se o problema for a pergunta avisa.

Nenhuma das variáveis podem causar problemas. Nem locais, nem de instância.

O que você leu não era sobre variáveis estáticas? Essas sim, costumam ser pepino, dentro ou fora de servlets.

E não se preocupe com a perda de performance, principalmente com detalhes possivelmente irrelevantes como esse.
Veja algumas dicas sobre performance:

Olá

As variáveis locais não são um problema.
Está certinho do jeito que fez.

OBS: 2 horas é pouco tempo, espere um dia, se ninguém responder ai você cutuca :slight_smile:

Obrigado pessoal , entao assim nao existe risco de perca de dados com possiveis requests multiplos?

O risco estaria somente em variaveis estaticas?

Obrigado pela resposta.

Não, não há risco de perda, pelo menos, não devido a multi-threading.

O que pode haver é outro problema, similar. Dois objetos distintos são carregados na memória, por dois usuários, a título de exemplo, digamos que seja um cliente.
O usuário a) altera apenas o nome, e o usuário b) altera a idade desse cliente. Ambos salvam os dados. Infelizmente, um dos dois irá perder a informação. A correção disso é bem mais difícil, e envolve controlar a versão do objeto, e avisar um dos usuários de que uma alteração ocorreu enquanto ele mexia no registro. Mas essa é outra história e, geralmente, essa situação é tão rara que muita gente sequer se preocupa com ela.

Obrigado ViniGodoy.

Editado para Resolvido.

Até onde meu conhecimento vai, variaveis de instância em servlets podem sofrer problemas de Race condition.