2010-01-21 33 views
5

पर कौन से खुले सत्र मेरे सर्वलेट आधारित एप्लिकेशन को संभालने का पता लगाना है, मुझे वर्तमान में खोले गए सत्रों की सूची के बारे में जानकारी प्राप्त होने पर एक सर्वलेट लिखना होगा।किसी भी पल

क्या ऐसा करने का कोई तरीका है?

उत्तर

5

HttpSessionListener लागू है, यह एक static Set<HttpSession> संपत्ति दे, sessionCreated() विधि के दौरान यह करने के लिए सत्र जोड़ने के लिए, sessionDestroyed() विधि के दौरान इसे से सत्र को हटाने, <listener> के रूप में श्रोता रजिस्टर web.xml में। अब आपके पास एक कक्षा है जिसमें वर्तमान जेबॉस इंस्टेंस में सभी खुले सत्र हैं।

public HttpSessionCollector implements HttpSessionListener { 
    private static final Set<HttpSession> sessions = ConcurrentHashMap.newKeySet(); 

    public void sessionCreated(HttpSessionEvent event) { 
     sessions.add(event.getSession()); 
    } 

    public void sessionDestroyed(HttpSessionEvent event) { 
     sessions.remove(event.getSession()); 
    } 

    public static Set<HttpSession> getSessions() { 
     return sessions; 
    } 
} 
अपने सर्वलेट में

तो बस कार्य करें:: यहाँ एक बुनियादी उदाहरण है

Set<HttpSession> sessions = HttpSessionCollector.getSessions(); 

आप बल्कि स्टोर करने के लिए/इसे पाने के आवेदन के दायरे में है, ताकि आप Set<HttpSession>गैर स्थिर कर सकते हैं चाहते हैं

public void contextCreated(ServletContextEvent event) { 
    event.getServletContext().setAttribute("HttpSessionCollector.instance", this); 
} 

public static HttpSessionCollector getCurrentInstance(ServletContext context) { 
    return (HttpSessionCollector) context.getAttribute("HttpSessionCollector.instance"); 
} 
:
, तो HttpSessionCollector लागू ServletContextListener रूप में अच्छी तरह और मूल रूप से निम्न विधियों में शामिल कर सकते हैं

इस प्रकार है जो आप सर्वलेट में उपयोग कर सकते हैं:

HttpSessionCollector collector = HttpSessionCollector.getCurrentInstance(getServletContext()); 
Set<HttpSession> sessions = collector.getSessions(); 
3

शायद का उपयोग कर एक JMX सेम और अधिक सुरुचिपूर्ण है और कोई कोड की जरूरत है। बस

डेटा का मूल्य पढ़ें: jboss.web: type = manager, path =/myplplication, host = localhost "सक्रिय सत्र