Problema com HttpServlet
31/10/2016
0
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:
]
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:
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á.
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
Curtir tópico
+ 0
Responder
Posts
Clique aqui para fazer login e interagir na Comunidade :)