package org.etk.kernel.container; import java.util.HashMap; import org.etk.kernel.container.client.ClientInfo; public class SessionContainer extends HashMap<Object, Object> { private static ThreadLocal threadLocal_ = new ThreadLocal(); final public static int INIT_STATUS = 0; final public static int START_STATUS = 1; final public static int STOP_STATUS = 2; final public static int DESTROY_STATUS = 3; private String owner_; private String portalName_; private ClientInfo clientInfo_; private long startTime_ = -1; private String sessionId_; private String uniqueId_; private int status_; private long lastAccessTime_; public SessionContainer(String id, String owner) { sessionId_ = id; owner_ = owner; } public String getSessionId() { return sessionId_; } public String getUniqueId() { return uniqueId_; } public void setUniqueId(String s) { uniqueId_ = s; } public String getOwner() { return owner_; } public String getRemoteUser() { return clientInfo_.getRemoteUser(); } public String getPortalName() { return portalName_; } public void setPortalName(String name) { portalName_ = name; } public ClientInfo getClientInfo() { return clientInfo_; } public void setClientInfo(ClientInfo ci) { clientInfo_ = ci; } public int getStatus() { return status_; } public void setStatus(int status) { status_ = status; } public long getCreationTime() { return startTime_; } public long getLastAccessTime() { return lastAccessTime_; } public void setLastAccessTime(long time) { if (startTime_ < 0) startTime_ = time; lastAccessTime_ = time; } public long getLiveTime() { return System.currentTimeMillis() - startTime_; } public long getLiveTimeInMinute() { return (System.currentTimeMillis() - startTime_) / 60000; } public long getLiveTimeInSecond() { return (System.currentTimeMillis() - startTime_) / 1000; } public static Object getComponent(Class key) { SessionContainer scontainer = (SessionContainer) threadLocal_.get(); return scontainer.get(key); } final public void registerComponentInstance(Object key, Object obj) { put(key, obj); } final public Object getComponentInstance(Object key) { return get(key); } final public Object getComponentInstanceOfType(Class key) { return get(key); } static public SessionContainer getInstance() { return (SessionContainer) threadLocal_.get(); } static public void setInstance(SessionContainer scontainer) { threadLocal_.set(scontainer); } }