如何使用session
获取登录的活跃用户列表。
我已尝试session.getOpenSessions()
,但值为null
。
这个我需要它用于我的网络套接字聊天程序......
请帮助我。
答案 0 :(得分:0)
您应该使用JMX(Java Managemnet eXtension),如下所示:
jmxObjectName: Catalina:host=localhost,path=/,type=Manager
jmxAttributeName: activeSessions
您可以使用jconsole访问此数据。要让jmx运行,请参阅http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html
答案 1 :(得分:0)
要在tomcat中获取会话列表
import javax.management.remote.*;
import org.apache.catalina.*;
MBeanServer mBeanServer = MBeanServerFactory.findMBeanServer(null).get(0);
ObjectName name = new ObjectName("Catalina", "type", "Server");
Server tomcatServer = (org.apache.catalina.Server) mBeanServer.getAttribute(name, "managedResource");
Service service = tomcatServer.findService("Catalina");
Engine engine = (Engine) service.getContainer();
Host host = (Host) engine.findChild(engine.getDefaultHost());
Context context = (Context) host.findChild("");
StandardManager manager = (StandardManager) context.getManager();
Session[] sessions=manager.findSessions();