如何使用Java在Tomcat中以编程方式查找打开的会话数量?

时间:2009-09-29 12:21:22

标签: java session tomcat logging timeout

是否可以在Tomcat中可靠地找出开放会话的数量(即不仅是[当前时间] - [会话超时]之后已登录的用户数量,而是存储在服务器上的会话数量) )?

3 个答案:

答案 0 :(得分:4)

您可以使用JMX找到此信息。有关如何启用JMX以及要查询的变量,请参阅here

使用Ant JMX任务,您可以使用:

   <!-- get all sessions and split result as delimiter <em>SPACE</em> for easy
             access all session ids directly with ant property sessions.[0..n].
        -->
        <jmx:invoke
            name="Catalina:type=Manager,path=/ClusterTest,host=localhost" 
            operation="listSessionIds"
            resultproperty="sessions"
            echo="false"
            delimiter=" "
        />

但您可以使用其他工具,例如JConsole

答案 1 :(得分:2)

如果您的应用程序中需要此信息,则可以通过实现HttpSessionListener并将其添加到服务器上下文来跟踪创建或销毁会话的时间。

http://java.sun.com/javaee/5/docs/api/javax/servlet/http/HttpSessionListener.html

答案 2 :(得分:-1)

您可以使用内置管理器以及http://server:8080/manager/status

找到此信息

如果您没有启用管理员登录,请修改conf/tomcat-users.xml并添加role="admin"的用户。 Tomcat文档here中的更多信息。