Na hora de validar o usuário usa um wrapper:
. . . . . . . . .
      ConnectionHolder conHolder;
      try {
        conHolder = (ConnectionHolder) currentSession.getAttribute("seuServlet.connection");
      } catch (IllegalStateException ise)
      {
        conHolder = null;
      }
. . . . . . . . .
 
A classe wrapper que uso está abaixo:
 
import java.io.*;
import java.sql.*;
import javax.servlet.http.*;
 
/** Classe cujos objetos serão ligados às sessões para liberar as conexões
  * no timeout da session
 */
 
public final class ConnectionHolder implements HttpSessionBindingListener
{
  private Connection con;
  private Logger log;
  private ConnectionPool connectionPool;
  private User user;
  private boolean useConnectionPool;
 
  public ConnectionHolder(Connection con, User user, Logger log, boolean useConnectionPool,
                          ConnectionPool connectionPool)
  {
    this.con = con;
    this.user = user;
    this.log = log;
    this.useConnectionPool = useConnectionPool;
    if (useConnectionPool)
      this.connectionPool = connectionPool;
  }
 
  public Connection getConnection()
  {
    return con;
  }
 
  public void valueBound(HttpSessionBindingEvent event)
  {
    // Não faz nada
    log.writeLog("Conexão do usuário " + user.getUserId() + " ligada à sessão");
  }
 
  public void valueUnbound(HttpSessionBindingEvent event)
  {
    // Libera a conexão
    if (useConnectionPool)
    {
      connectionPool.free(con);
      try {
        if (!con.isClosed())
        {
          con.close();
        }
      } catch (SQLException e) {}
      con = null;
    }
    else
    {
      try {
        con.close();
      } catch (SQLException e) {}
      con = null;
    }
    log.writeLog("Sessão do usuário " + user.getUserId() + " terminou, conexão fechada");
  }
Bom proveito
Luiz Arnaldo Bastos
 
----- Original Message -----
Sent: Tuesday, July 10, 2001 11:46 AM
Subject: [java-list] HttpSessionBindingListener

Alguem ja trabalhou com esta interface implementando-a para notificar quando um usuario enta e sai da sessao.
 
Preciso saber quando uma sessao expira ou eh finalizada pelo usr para desconecta-lo do meu ambiente (banco)
 
Agradeço informaçoes,
 
Fabio Ferreira
 

Responder a