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 ?
Como posso resolver este problema ?
Olá, consegui fazer fazendo meu Listener implementar o HttpSessionAttributeListener… Agora estou preciando apenas fazer pegar o IP do usuário…
public class LoggerListener implements HttpSessionAttributeListener {
private HttpSessionBindingEvent evt;
private void logarEntrada() {
HttpSession session = evt.getSession();
try {
Logger logBEAN = new Logger();
LoggerDAO logDAO = new LoggerDAO();
logBEAN.setUserid(this.evt.getValue().toString());
logBEAN.setDtentrada(new Timestamp(System.currentTimeMillis()));
logBEAN.setIp("teste");
logDAO.login(logBEAN);
session.setAttribute("_LOGGER", logBEAN);
} catch (Exception e) {
System.out.println("------------------------------------------------");
System.out.println("ERRO ao fazer o logger (index.jsp): "+ e.getMessage());
System.out.println("------------------------------------------------");
}
}
private void logarSaida() {
try {
Logger bean = (Logger) this.evt.getValue();
bean.setDtsaida(new Timestamp(System.currentTimeMillis()));
LoggerDAO dao = new LoggerDAO();
dao.logout(bean);
} catch (Exception e) {
System.out.println("------------------------------------------------");
System.out.println("ERRO (LoggerListner.java): "+ e.getMessage() );
System.out.println("------------------------------------------------");
}
}
public void attributeAdded(HttpSessionBindingEvent evt) {
this.evt = evt;
if ("j_username".equals(evt.getName())) {
this.logarEntrada();
}
}
public void attributeRemoved(HttpSessionBindingEvent evt) {
this.evt = evt;
if ("_LOGGER".equals(evt.getName())) {
this.logarSaida();
}
}
public void attributeReplaced(HttpSessionBindingEvent evt) {
this.evt = evt;
if ("j_username".equals(evt.getName())) {
this.logarSaida();
this.logarEntrada();
}
}
}