📄 sessioncontext.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 + -