serversession.java

来自「天乙代码src_531.rar 天乙代码src_531.rar 天乙代」· Java 代码 · 共 104 行

JAVA
104
字号
package com.laoer.bbscs.servlet;

import java.util.*;
import javax.servlet.http.*;
import com.laoer.bbscs.sysinfo.*;
import org.apache.log4j.*;

public class ServerSession {

  public static Hashtable sessionlist = new Hashtable();

  static Logger logger = Logger.getLogger(ServerSession.class.getName());
  public ServerSession() {
  }

  public synchronized static void checkSession() {
    if (Sys.SYSINFO.SINGLESERVER.equals("no")) {
      String key = "";
      UserSession sessionInfo = null;
      long activeTime = 0;
      logger.info("清除之前 Session " + sessionlist.size() + " 个");
      if (sessionlist.size() > 0) {
        Enumeration e = sessionlist.keys();
        while (e.hasMoreElements()) {
          key = (String) e.nextElement();
          sessionInfo = (UserSession) sessionlist.get(key);
          activeTime = sessionInfo.nowtime;
          if (activeTime <
              (System.currentTimeMillis() - Sys.SYSINFO.SESSIONOVERTIME)) {
            sessionlist.remove(key);
            logger.info("清除Session:" + key);
          }
        }
      }
      logger.info("清除之后 Session " + sessionlist.size() + " 个");
    }
  }

  public static UserSession getNewSession(String key,
                                          HttpServletRequest request) {
    UserSession aUserSession = new UserSession(key, request);
    if (Sys.SYSINFO.SINGLESERVER.equals("no")) {
      sessionlist.put(key, aUserSession);
      /*
             Util.log("�½�Session[KEY:" + key + "]");
             String[] serverip = Sys.getServerIP();
             for (int i = 0; i < serverip.length; i++) {
        SessionClient aSessionClient = new SessionClient(serverip[i],
            Sys.SYSINFO.PORT);
        aSessionClient.sendUserSession(aUserSession);
             }*/
    }
    return aUserSession;
  }

  public static UserSession getSession(String key, HttpServletRequest request) {
    UserSession aUserSession = null;
    if (Sys.SYSINFO.SINGLESERVER.equals("no")) {
      aUserSession = (UserSession) sessionlist.get(key);
    }
    else {
      aUserSession = new UserSession(key, request);
    }
    return aUserSession;
  }

  public static void upSession(UserSession aUserSession) {
    if (Sys.SYSINFO.SINGLESERVER.equals("no")) {
      aUserSession.upTime();
      sessionlist.put(aUserSession.sesssionID, aUserSession);
      String[] serverip = Sys.getServerIP();
      for (int i = 0; i < serverip.length; i++) {
        //Util.log("�½�Session[KEY:" + aUserSession.sesssionID + "]");
        logger.info("发送Session[KEY:" + aUserSession.sesssionID + "]");
        SessionClient aSessionClient = new SessionClient(serverip[i],
            Sys.SYSINFO.PORT);
        aSessionClient.sendUserSession(aUserSession);
      }
    }
  }

  public static void upMsg(UpMsg aUpMsg) {
    if (Sys.SYSINFO.SINGLESERVER.equals("no")) {
      String[] serverip = Sys.getServerIP();
      for (int i = 0; i < serverip.length; i++) {
        logger.info("发送更新信息");
        SessionClient aSessionClient = new SessionClient(serverip[i],
            Sys.SYSINFO.PORT);
        aSessionClient.sendUpMsg(aUpMsg);
      }
    }
  }

  public static void removeSession(String key, HttpServletRequest request) {
    if (Sys.SYSINFO.SINGLESERVER.equals("no")) {
      sessionlist.remove(key);
    }
    else {
      request.getSession().invalidate();
    }
  }

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?