Fórum Problema com HttpServlet #570164
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
01/11/2016
Duilio Benjoino
Alguém?
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)