<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="tomcat集群时统计session与在线人数" id="card1">
<p> 游客</p><p>
标题:tomcat集群时统计session与在线人数<br/>
正文:<br/>
tomcat集群时，原来通过HttpSessionListener实现类监听session的创建和销毁来统计在线人数的方法不再有效，因为不是每个人登陆都会在同一个tomcat服务器上，而在另一台tomcat上登陆的人的session是通过session复制创建的，而复制过程不会调用HttpSessionListener接口的方法，也一直没找着如何监听session复制的方法，所以就没法统计在线人了。      今天突然回想起tomcat下的manager应用上面就能看到session数和session的内容，于是本文的实现原理就是，做一个类似这样的servlet，此servlet把tomcat上负责管理应用的对象保存下来，供我任意使用。在tomcat上看应用的信息时，使用的是http://localhost:8080/manager/html/list这个路径，页面信息见下图：      于是把源码下来看看（最新版原码下载地址http://apache.etoak.com/tomcat/tomcat-6/v6.0.26/src/apache-tomcat-6.0.26-src.zip），细看tomcat下webapps/manager/WEB-INF/web.xml文件配置，发现原来tomcat是通过org.apache.catalina.manager.ManagerServlet这个类来提供以上服务的，跟踪此类doGet方法代码  Java代码     public void doGet(HttpServletRequest request,                            HttpServletResponse response)              throws IOException,&amp;<br/><a href="http://www.xmwzidc.com/blog/wap.asp?mode=WAP&amp;act=View&amp;id=517&amp;Page=1">[&lt;&lt;]</a><a href="http://www.xmwzidc.com/blog/wap.asp?mode=WAP&amp;act=View&amp;id=517&amp;Page=1">[[1]]</a><a href="http://www.xmwzidc.com/blog/wap.asp?mode=WAP&amp;act=View&amp;id=517&amp;Page=2">[2]</a><a href="http://www.xmwzidc.com/blog/wap.asp?mode=WAP&amp;act=View&amp;id=517&amp;Page=3">[3]</a><a href="http://www.xmwzidc.com/blog/wap.asp?mode=WAP&amp;act=View&amp;id=517&amp;Page=24">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=517">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=517">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://www.xmwzidc.com/blog/wap.asp">首页</a>
</p>
</card>
</wml>