首页 > 其他 > 详细

基于tomcat获取在线用户数

时间:2015-01-22 02:07:36      阅读:315      评论:0      收藏:0      [点我收藏+]

需求:

统计某应用的在线用户数

实现方案:

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

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

采用第二种的实现如下:

private int activeUserNumber(HttpServletRequest request) {
	int activeSessions = 0;
	try {
		if (request instanceof RequestFacade) {
			Field requestField = request.getClass().getDeclaredField(
					"request");
			requestField.setAccessible(true);
			Request req = (Request) requestField.get(request);
			org.apache.catalina.Context context = req.getContext();
			Manager manager = context.getManager();
			activeSessions = manager.getActiveSessions();
		}
	} catch (Exception e) {
		e.printStackTrace();
	}
	log.info("users:{}", activeSessions);
	return activeSessions;
}

private List<Usr> activeUsers(HttpServletRequest request) {
	List<Usr> list = new ArrayList<Usr>();
	try {
		if (request instanceof RequestFacade) {
			Field requestField = request.getClass().getDeclaredField(
					"request");
			requestField.setAccessible(true);
			Request req = (Request) requestField.get(request);
			org.apache.catalina.Context context = req.getContext();
			Manager manager = context.getManager();

			Session[] sessions = manager.findSessions();
			for (Session session : sessions) {
				 //your
			}
		}
	} catch (Exception e) {
		e.printStackTrace();
	}
	log.info("users:{}", list);
	return list;
}

?

基于tomcat获取在线用户数

原文:http://snv.iteye.com/blog/2178191

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!