ClusteredHTTPSessionServiceMBean.java |
/* * JBoss, the OpenSource J2EE webOS * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jboss.ha.httpsession.server; import javax.ejb.EJBException; import org.jboss.ha.httpsession.interfaces.SerializableHttpSession; /** * Service that provide unified access to clustered HTTPSessions for servlets. * * @see org.jboss.ha.httpsession.beanimpl.interfaces.ClusteredHTTPSession * @see org.jboss.ha.httpsession.beanimpl.interfaces.ClusteredHTTPSessionHome * * @author <a href="mailto:sacha.labourey@cogito-info.ch">Sacha Labourey</a>. * @version $Revision: 1.3 $ * * <p><b>Revisions:</b> * * <p><b>31. décembre 2001 Sacha Labourey:</b> * <ul> * <li> First implementation </li> * </ul> */ public interface ClusteredHTTPSessionServiceMBean extends org.jboss.system.ServiceMBean { /** * Return the HttpSession associated to a session id. * As all session id are shared for all Web Applications, all sessions ids accross * all applications and all nodes must be distincts! * The creation and last access time of the session may not be correct if they * are the only thing that has been modified on a distant node (and no attribute). * See setHttpSession for more information. */ public SerializableHttpSession getHttpSession (String sessionId, ClassLoader tcl) throws EJBException; /** * Associate a new session with the session id. To reduce the cluster communication, * if the only thing that has changed in the session is the last accessed time, the * new session is kept in cache but not replicated on the other nodes. Thus, if you * use a front-end load-balancer that support sticky session, that is not a problem * because a client will always target the same node and receive the updated session * available in cache. * Nevertheless, as soon as an attribute is modified in the session, it is replicated * in the cluster. */ public void setHttpSession (String sessionId, SerializableHttpSession session) throws EJBException; /** * Remove an HttpSession from the cluster (log off for example) */ public void removeHttpSession (String sessionId) throws EJBException; /** * Generates a new session id available cluster-wide */ public String getSessionId (); /** * Indicate the duration, in ms, after which the session can be cleaned if no * access occurs. */ public long getSessionTimeout (); // defaults to 15 minutes i.e. 15*60*1000 = 900'000 /** * Indicate the duration, in ms, after which the session can be cleaned if no * access occurs. */ public void setSessionTimeout (long miliseconds); /** * Indicates whether the service should use the local and home interfaces of the * entity bean or the remote and remote home interfaces (depending if they are in * the same JVM). */ public void setUseLocalBean (boolean useLocal); public boolean getUseLocalBean (); }
ClusteredHTTPSessionServiceMBean.java |