OnlineUserManager.java
上传用户:mingda
上传日期:2017-06-20
资源大小:27691k
文件大小:3k
源码类别:

OA系统

开发平台:

Java

  1. package com.gforce.currency;
  2. /**
  3.  * <p>Title: 吉力科技办公自动化系统</p>
  4.  * <p>Description: 吉力科技办公自动化系统</p>
  5.  * <p>Copyright: 版权所有 2004 (c) 西安吉力科技发展有限公司  Copyright (c) 2004 GForce Sceince & Technology</p>
  6.  * <p>Company: 西安吉力科技发展有限公司 (GForce Sceince & Technology)</p>
  7.  * @author 马登军
  8.  * @version 1.0
  9.  */
  10. import java.util.*;
  11. import com.gforce.currency.*;
  12. import java.io.*;
  13. import javax.servlet.http.*;
  14. public class OnlineUserManager
  15. {
  16.   private static OnlineUserManager instance; // 唯一实例
  17.   private static Hashtable htOnlineUsersUsers = new Hashtable();
  18.   /**
  19.    * 获取连接池哈希表
  20.    * @return 连接池哈希表
  21.    */
  22.   public static Hashtable getOnlineUsers()
  23.   {
  24.     Enumeration keys = htOnlineUsersUsers.keys();
  25.     while(keys.hasMoreElements())
  26.     {
  27.       Object key = keys.nextElement();
  28.       if (htOnlineUsersUsers.containsKey(key))
  29.       {
  30.         if(htOnlineUsersUsers.get(key).equals(null))
  31.         {
  32.           htOnlineUsersUsers.remove(key);
  33.         }
  34.         else
  35.         {
  36.           HttpSession cSession = ((HttpSession)htOnlineUsersUsers.get(key));
  37.           try
  38.           {
  39.             if ( (new Date()).getTime() - cSession.getLastAccessedTime() > cSession.getMaxInactiveInterval() * 1000 - 2000)
  40.             {
  41.               htOnlineUsersUsers.remove(key);
  42.             }
  43.           }
  44.           catch(IllegalStateException err)
  45.           {
  46.             if(err.getMessage().indexOf("Session already invalidated")>-1)
  47.             {
  48.               htOnlineUsersUsers.remove(key);
  49.             }
  50.           }
  51.         }
  52.       }
  53.     }
  54.     return htOnlineUsersUsers;
  55.   }
  56.   /**
  57.    * 返回唯一实例.如果是第一次调用此方法,则创建实例
  58.    * @return ConnectionPool 唯一实例
  59.    */
  60.   static synchronized public OnlineUserManager Instance()
  61.   {
  62.     if (instance == null)
  63.     {
  64.       instance = new OnlineUserManager();
  65.     }
  66.     return instance;
  67.   }
  68.   /**
  69.    * 建构函数私有以防止其它对象创建本类实例
  70.    */
  71.   private OnlineUserManager()
  72.   {
  73.   }
  74.   /**
  75.    * 清除所有在线用户信息
  76.    */
  77.   public static void ClearAllUsers()
  78.   {
  79.     htOnlineUsersUsers.clear();
  80.   }
  81.   /**
  82.    * 增加在线用户Session信息
  83.    * @param hsSession HttpSession Session信息
  84.    */
  85.   public static void AddNewSession(HttpSession hsSession)
  86.   {
  87.     String strSessionID = hsSession.getId();
  88.     if (htOnlineUsersUsers.isEmpty())
  89.     {
  90.       htOnlineUsersUsers.put(strSessionID, hsSession);
  91.       return;
  92.     }
  93.     else
  94.     {
  95.       if (htOnlineUsersUsers.containsKey(strSessionID))
  96.       {
  97.         htOnlineUsersUsers.remove(hsSession.getId());
  98.         htOnlineUsersUsers.put(strSessionID, hsSession);
  99.       }
  100.       else
  101.       {
  102.         htOnlineUsersUsers.put(strSessionID, hsSession);
  103.       }
  104.     }
  105.   }
  106. }