Problema com HttpServlet

PostgreSQL

Java

31/10/2016

Fala pessoal,

Tenho um sistema web (JSP) em produção que utiliza Postgree, Hibernate e Spring. Utilizo Servlet e recentemente tenho tido alguns problemas em relação à utilização do HttpSession.

Ao logar no sistema, guardo um objeto Usuario no HttpSession:
HttpSession session = request.getSession();
Usuario usuario;
UsuarioDao dao = new UsuarioDao();
Criterion c = Restrictions.and(Restrictions.eq("email", request.getParameter("email")),Restrictions.eq("senha", Criptografia.criptografar(request.getParameter("senha"))));
usuario = dao.carregar(c);
if(usuario != null){
      if(usuario.isAtivo()){
          session.setAttribute("usuario",usuario);
          response.sendRedirect("sistema/");
      }
}
]
Através desse objeto (Usuario) que está no HttpSession é que identifico quem é o usuário que está logado e consequentemente o utilizo para persistir registros.
O problema tem ocorrido, de vez em quando (sem nenhum padrão aparente), quando um usuário está persistindo vários registros e em alguns destes o usuário vinculado ao registro acaba sendo diferente ao objeto contido no HttpSession, por exemplo:

O usuário envia um comando através do JSP para que sejam registrados o pagamento de várias contas:
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      Usuario usuarioLogado = (Usuario) request.getSession().getAttribute("usuario");
      PagamentoDao dao = new PagamentoDao();


      Pagamento pgto = new Pagamento();
      pgto.setUsuario(usuarioLogado);
      dao.salvar(pgto);

      Pagamento pgto2 = new Pagamento();
      pgto2.setUsuario(usuarioLogado);
      dao.salvar(pgto2);

      Pagamento pgto3 = new Pagamento();
      pgto3.setUsuario(usuarioLogado);
      dao.salvar(pgto3);
}

No exemplo acima, o problema se manifestaria apresentando um resultado onde os dois primeiros objetos iriam ser persistidos com o usuário correto e o terceiro com um usuário diverso (logado em outra HttpSession, outra máquina).

Para persistir esse objeto utilizo o HibernateDaoSupport do Spring.

Já busquei erros no código mas não encontrei. Esse erro tem acontecido raramente mas é bem preocupante. Alguém já passou por isso? Tem alguma luz sobre o assunto?

Grato desde já.
Duilio Benjoino

Duilio Benjoino

Curtidas 0

Respostas

Duilio Benjoino

Duilio Benjoino

31/10/2016

Alguém?
GOSTEI 0
POSTAR