1
package com.eucalyptus.webui.server;
4
import com.eucalyptus.auth.AuthenticationProperties;
5
import com.eucalyptus.auth.AuthenticationProperties.LicChangeListener;
6
import com.eucalyptus.configurable.ConfigurableClass;
7
import com.eucalyptus.configurable.ConfigurableField;
8
import com.google.common.collect.Maps;
11
* Web session manager, maintaining a web session registrar.
13
* @author Ye Wen (wenye@eucalyptus.com)
16
public class WebSessionManager {
18
private static WebSessionManager instance = null;
20
private Map<String, WebSession> sessions = Maps.newHashMap( );
22
private WebSessionManager( ) {
26
public static synchronized WebSessionManager getInstance( ) {
27
if ( instance == null ) {
28
instance = new WebSessionManager( );
34
* Create new web session record.
38
* @return the new session ID.
40
public synchronized String newSession( String userName, String accountName ) {
41
String id = ServletUtils.genGUID( );
42
long time = System.currentTimeMillis( );
43
WebSession session = new WebSession( id, userName, accountName, time/*creationTime*/, time/*lastAccessTime*/ );
44
sessions.put( id, session );
49
* Get a session by ID. Remove this session if expired.
52
* @return the session, null if not exists or expired.
54
public synchronized WebSession getSession( String id ) {
55
WebSession session = sessions.get( id );
56
if ( session != null ) {
57
if ( System.currentTimeMillis( ) - session.getCreationTime( ) > AuthenticationProperties.WEBSESSION_LIFE_IN_MINUTES * 60 * 1000 ) {
58
sessions.remove( id );
66
* Get a session by user name and account name. Remove the found session if expired.
72
public synchronized WebSession getSession( String userName, String accountName ) {
73
for ( WebSession session : sessions.values( ) ) {
74
if ( session != null && session.getUserName( ).equals( userName ) && session.getAccountName( ).equals( accountName ) ) {
75
if ( System.currentTimeMillis( ) - session.getCreationTime( ) > AuthenticationProperties.WEBSESSION_LIFE_IN_MINUTES * 60 * 1000 ) {
76
sessions.remove( session.getId( ) );
90
public synchronized void removeSession( String id ) {
92
sessions.remove( id );