JAVA Session管理 (一)

2014-11-24 10:51:01 · 作者: · 浏览: 2

public interface ICallback
{
/**
* 捕获异常
* @param session Session
*/
public void handleTimeout(Session session);
}


public class Session
{

private final String id;

private final int sessionTimeout;

private ICallback callback;

public Object obj1;

/**
* Session构造函数
* @param id String
*/
public Session(final String id, final int sessionTimeout)
{
this.id = id;
this.sessionTimeout = sessionTimeout;
}

public ICallback getCallback()
{
return callback;
}

/**
* setCallback
* @param callback ICallback
*/
public void setCallback(ICallback callback)
{
this.callback = callback;
if (this.callback != null)
{
SessionManager.getInstance().addCallbackToSession(this, callback);
}
}

public String getId()
{
return id;
}

public int getSessionTimeout()
{
return sessionTimeout;
}

/**
* 发送消息
* @param message 消息
* @param channel Channel
* @see [类、类#方法、类#成员]
*/
public ChannelFuture sendMessage(AopMessage message, Channel channel)
{
if (channel != null && channel.isOpen())
{
return channel.write(message);
}
return null;
}

/**
* hashCode
* @return int
*/
@Override
public int hashCode()
{
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) 0 : id.hashCode());
return result;
}

/**
* equals
* @param obj Object
* @return boolean
*/
@Override
public boolean equals(Object obj)
{
if (this == obj)
{
return true;
}
if (obj == null)
{
return false;
}
if (getClass() != obj.getClass())
{
return false;
}
Session other = (Session)obj;
if (id == null)
{
if (other.id != null)
{
return false;
}
}
else if (!id.equals(other.id))
{
return false;
}
return true;
}

}

public class SessionManager
{
private static final IDebugLogger LOG = LogFactory.getDebugLogger(SessionManager.class);

private static SessionManager ins = new SessionManager();

private final Map sessionMap = new ConcurrentHashMap();

private final Map timerMap = new ConcurrentHashMap();

private final Timer timer = NettyServer.TIMER;

private static int sessionTime;

public void init()
{
UnModifyConfig unModifyConfig = BUS.getBean("unModifyConfig");
sessionTime = unModifyConfig.getPushSessionTimeOut();
}

public static SessionManager getInstance()
{
return ins;
}

/**
* 创建一个Session
* @param id sessionID
* @return Session
* @see [类、类#方法、类#成员]
*/
public Session createSession(String id)
{
LOG.debug("Begin to create session id = {}", id);

final Session s = new Session(id, 0);
sessionMap.put(id, s);
return s;
}

public Session createSession(String id, int sessionTimeout)
{
LOG.debug("Begin to create session id = {}", id);

final Session s = new Session(id, sessionTimeout);
sessionMap.put(id, s);
return s;
}