zoukankan      html  css  js  c++  java
  • 基于tomcat获取在线用户数

    https://blog.csdn.net/smallnetvisitor/article/details/84697505

    需求:

    统计某应用的在线用户数

    实现方案:

    1.基于session监听(复杂麻烦)

    2.基于org.apache.catalina.Manager(依赖)

    采用第二种的实现如下:

    1.  
      private int activeUserNumber(HttpServletRequest request) {
    2.  
      int activeSessions = 0;
    3.  
      try {
    4.  
      if (request instanceof RequestFacade) {
    5.  
      Field requestField = request.getClass().getDeclaredField(
    6.  
      "request");
    7.  
      requestField.setAccessible(true);
    8.  
      Request req = (Request) requestField.get(request);
    9.  
      org.apache.catalina.Context context = req.getContext();
    10.  
      Manager manager = context.getManager();
    11.  
      activeSessions = manager.getActiveSessions();
    12.  
      }
    13.  
      } catch (Exception e) {
    14.  
      e.printStackTrace();
    15.  
      }
    16.  
      log.info("users:{}", activeSessions);
    17.  
      return activeSessions;
    18.  
      }
    19.  
       
    20.  
      private List<Usr> activeUsers(HttpServletRequest request) {
    21.  
      List<Usr> list = new ArrayList<Usr>();
    22.  
      try {
    23.  
      if (request instanceof RequestFacade) {
    24.  
      Field requestField = request.getClass().getDeclaredField(
    25.  
      "request");
    26.  
      requestField.setAccessible(true);
    27.  
      Request req = (Request) requestField.get(request);
    28.  
      org.apache.catalina.Context context = req.getContext();
    29.  
      Manager manager = context.getManager();
    30.  
       
    31.  
      Session[] sessions = manager.findSessions();
    32.  
      for (Session session : sessions) {
    33.  
      //your
    34.  
      }
    35.  
      }
    36.  
      } catch (Exception e) {
    37.  
      e.printStackTrace();
    38.  
      }
    39.  
      log.info("users:{}", list);
    40.  
      return list;
    41.  
      }
  • 相关阅读:
    Qt状态机实例
    <STL> accumulate 与 自定义数据类型
    <STL> 容器混合使用
    散列表(C版)
    Canonical 要将 Qt 应用带入 Ubuntu
    <STL> set随笔
    C++ 文件流
    视频播放的基本原理
    <STL> pair随笔
    c++ 内存存储 解决char*p, char p[]的问题
  • 原文地址:https://www.cnblogs.com/linus-tan/p/10682894.html
Copyright © 2011-2022 走看看