⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sessioncontext.java

📁 OPIAM stands for Open Identity and Access Management. This Suite will provide modules for user & rig
💻 JAVA
字号:
/*
 * OPIAM Suite
 *
 * Distributable under LGPL license.
 * See terms of license at gnu.org.
 */

package opiam.admin.faare.struts.utils;

import opiam.admin.faare.service.UserContext;

import org.apache.log4j.Logger;

import java.io.Serializable;

import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;


/**
 * This object stores a userContext and manages session timeouts.
 * It implements HttpSessionBindingListener which allows to performs
 * actions when session times out.
 */
public final class SessionContext implements HttpSessionBindingListener, Serializable
{
    /** Instance of logger. */
    private static Logger _cat = Logger.getLogger(SessionContext.class.getName());

    /** User context. */
    private UserContext userContext = null;

    /** Creates new SessionContext. */
    private SessionContext()
    {
    }

    /**
     * Gets instance of SessionContext corresponding to HTTP session.
     *
     * @param session HTTP session
     *
     * @return SessionContext instance
     */
    public static SessionContext getInstance(HttpSession session)
    {
        // return object in session if exist
        SessionContext result = (SessionContext) session.getAttribute(
                "sessionContext");

        if (result != null)
        {
            return result;
        }

        // do not exist in session, create it
        _cat.debug("GETINSTANCE id session : " + session.getId());
        result = new SessionContext();
        session.setAttribute("sessionContext", result);

        if (result.userContext == null)
        {
            //Cr閍tion du userContext
            result.userContext = new UserContext(session.getId());
        }

        return result;
    }

    /** Gets User Context.
     * @return user context.
     */
    public UserContext getUserContext()
    {
        return userContext;
    }

    /**
     * Called on disconnection (valueUnbound method).
     */
    public void disconnect()
    {
        //Lors de la d閏onnection, on efface les fichiers export閟 par l'utilisateur
        // et on se d閏onnecte de la factory(fermeture de la connection LDAP et vidache du cache)
        try
        {
            if (userContext != null)
            {
                userContext.clear();
            }
        }
        catch (Exception e)
        {
            _cat.error(e.toString());
        }

        userContext = null;
    }

    /**
     * @see javax.servlet.http.HttpSessionBindingListener#valueBound(HttpSessionBindingEvent).
     */
    public void valueBound(HttpSessionBindingEvent event)
    {
        HttpSession session = event.getSession();
        _cat.debug("VALUEBOUND pour session : " + session.getId());
    }

    /**
     * @see javax.servlet.http.HttpSessionBindingListener#valueUnbound(HttpSessionBindingEvent).
     */
    public void valueUnbound(HttpSessionBindingEvent event)
    {
        try
        {
            _cat.info("UNBOUND SESSION");

            HttpSession session = event.getSession();
            disconnect();
        }
        catch (Exception e)
        {
            _cat.debug("User deja deconnecte", e);
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -