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.  
    }

基于tomcat获取在线用户数的更多相关文章

  1. 关于使用HttpSessionBindingListener获取在线用户数,同一用户登陆一次

    原创地址:http://blog.csdn.net/jiaoxueli/article/details/2226134 考虑到项目中统计在线用户数量和同一用户只能登陆一次的需求,查询联系 HttpSe ...

  2. 基于express+redis高速实现实时在线用户数统计

    作者:zhanhailiang 日期:2014-11-09 本文将介绍怎样基于express+redis高速实现实时在线用户数统计. 1. 在github.com上创建项目uv-tj.将其同步到本地: ...

  3. Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) JAVA日志的前世今生 .NET MVC采用SignalR更新在线用户数 C#多线程编程系列(五)- 使用任务并行库 C#多线程编程系列(三)- 线程同步 C#多线程编程系列(二)- 线程基础 C#多线程编程系列(一)- 简介

    Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) 一.前言 由于本篇文章较长,所以下面给出内容目录方便跳转阅读,当然也可以用博客页面最右侧的文章目录导航栏进行跳转查阅. 一.前言 ...

  4. websocket 无需通过轮询服务器的方式以获得响应 同步在线用户数 上线下线 抓包 3-way-handshake web-linux-shell 开发

    https://code.google.com/archive/p/phpwebsocket/source/default/source The WebSocket API (WebSockets) ...

  5. 基于tomcat与Spring的实现差异化配置方案

    起因 在实际开发过程中经常需要加载各种各样的配置文件..比如数据库的用户名密码,要加载的组件,bean等等..但是这种配置在各个环境中经常是不一样的....比如开发环境和测试环境,真实的生产环境.. ...

  6. 基于Tomcat的Solr3.5集群部署

    基于Tomcat的Solr3.5集群部署 一.准备工作 1.1 保证SOLR库文件版本相同 保证SOLR的lib文件版本,slf4j-log4j12-1.6.1.jar slf4j-jdk14-1.6 ...

  7. 基于tomcat+spring+mysql搭建的个人博客

    基于tomcat和spring开发的个人博客, 服务器是基于tomcat, 用了spring框架, web.xml的配置简单明了,我们只要配置MYSQL和用户过滤器等, 服务器的jsp就是负责VIEW ...

  8. [项目回顾]基于Redis的在线用户列表解决方案

    迁移:基于Redis的在线用户列表解决方案 前言: 由于项目需求,需要在集群环境下实现在线用户列表的功能,并依靠在线列表实现用户单一登陆(同一账户只能一处登陆)功能: 在单机环境下,在线列表的实现方案 ...

  9. PHP统计当前在线用户数实例

    HTML 我们在页面上放置一个显示当前在线人数的div#total以及一个用于展示访客地区分布的列表#onlinelist,默认我们在列表中放置一张与加载动画图片,后面我们用jQuery控制当鼠标滑向 ...

随机推荐

  1. 简易祖玛--canvas

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. 虚拟机网络NAT模式配置静态IP

    虚拟机网络连接方式 安装好虚拟机以后,在网络连接里面可以看到多了两块网卡: 其中VMnet1是虚拟机Host-only模式的网络接口,VMnet8是NAT模式的网络接口. 虚拟机常见有三种网络连接方式 ...

  3. 第三周博客之二---Oracle中的sql语句

    一.用户及权限(DBA有最高系统权限) 1.数据库的安全性:系统的安全性.数据的安全性 2.权限分类: 2.1系统权限:获得后可访问数据库 常用的有create table,create user,c ...

  4. java算法03 - 常用的8种排序算法

    Java常用的八种排序算法: 插入排序 - 直接插入排序 每次将待排序的记录按照关键字的大小,插入到前面已经排好序的记录的适当位置.直到全部记录插入完成. 代码实现 /** * 直接插入排序 O(n^ ...

  5. ansible-play变量的基本应用

    --- - host: appsrvs remote_user: root tasks: - name: install package yum: name={{ pkname }} - name: ...

  6. 第一个HTML文档

    属性 和 值 1.作用 用来修饰元素 ex:让 p 标记的文本水平居中对齐 <p>Hello World</p> 2.语法      1.属性的声明必须位于开始标记里      ...

  7. windows2012的服务器远程桌面提示内部错误的问题解决方法

    一.问题表象 我们在OpenStack安装了windows server2012r2版本的虚拟机,在本地通过远程桌面连接时,输入账号密码后,提示连接断开或者内部错误的问题 二.解决办法 1)windo ...

  8. 2017-10-27模拟赛2-T1 选举(election.*)

    Description 题目描述 C国的总统选举委员会最近遇到了一些麻烦. 他们在统计各省对H先生的支持率(百分比)时,把支持率四舍五入到了整数.等他们公布结果后,该国媒体发现这些省份的支持率之和不等 ...

  9. 「LuoguP1280」尼克的任务

    LuoguP1280尼克的任务 : 线性dp 题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构 ...

  10. MySQL 使用join操作时出现重复数据

    使用  group by 'id'' 如:SELECT e.* FROM excel e INNER JOIN task t ON t.eid=e.id where e.id>0  and t. ...