Olá amigos, preciso fazer uma auditoria ou melhor um logger dos usuários do meu sistema. Preciso gravar na entrada do sistema o login do usuário, o ip da maquina que solicitou a entrada e a data e hora (timestamp) que o cara entrou e jogar o JavaBean com estes valores num atributo de sessão.
Depois, qdo o cara fazer o logout ou expirar a conexão, devo pegar da sessão o JavaBean e gravar o horário que ele saiu.
O meu problema está sendo esta ultima parte. Eu tinha pensado em colocar num listener que implementa o HttpSessionListener, e no seu método sessionDestroyed fazer isto> Porém qdo eu chego neste método, a minha sessão já foi destruida e não consigo mais pegar o JavaBean da sessão.
De que maneira eu poderia fazer isto? Existe um método beforeSessionDestroi ?
Olá, consegui fazer fazendo meu Listener implementar o HttpSessionAttributeListener… Agora estou preciando apenas fazer pegar o IP do usuário…
publicclassLoggerListenerimplementsHttpSessionAttributeListener{privateHttpSessionBindingEventevt;privatevoidlogarEntrada(){HttpSessionsession=evt.getSession();try{LoggerlogBEAN=newLogger();LoggerDAOlogDAO=newLoggerDAO();logBEAN.setUserid(this.evt.getValue().toString());logBEAN.setDtentrada(newTimestamp(System.currentTimeMillis()));logBEAN.setIp("teste");logDAO.login(logBEAN);session.setAttribute("_LOGGER",logBEAN);}catch(Exceptione){System.out.println("------------------------------------------------");System.out.println("ERRO ao fazer o logger (index.jsp): "+e.getMessage());System.out.println("------------------------------------------------");}}privatevoidlogarSaida(){try{Loggerbean=(Logger)this.evt.getValue();bean.setDtsaida(newTimestamp(System.currentTimeMillis()));LoggerDAOdao=newLoggerDAO();dao.logout(bean);}catch(Exceptione){System.out.println("------------------------------------------------");System.out.println("ERRO (LoggerListner.java): "+e.getMessage());System.out.println("------------------------------------------------");}}publicvoidattributeAdded(HttpSessionBindingEventevt){this.evt=evt;if("j_username".equals(evt.getName())){this.logarEntrada();}}publicvoidattributeRemoved(HttpSessionBindingEventevt){this.evt=evt;if("_LOGGER".equals(evt.getName())){this.logarSaida();}}publicvoidattributeReplaced(HttpSessionBindingEventevt){this.evt=evt;if("j_username".equals(evt.getName())){this.logarSaida();this.logarEntrada();}}}