मेरे वेब ऐप में, जब कोई उपयोगकर्ता लॉग इन करता है, तो मैं अपने आईडी को सर्वलेट में मान्य आईडी के वेक्टर में जोड़ता हूं, जब वह लॉग आउट करता है, तो मैं वेक्टर से अपना आईडी हटा देता हूं, इसलिए मैं देख सकता हूं कि कितने मौजूदा उपयोगकर्ता सक्रिय हैं , यदि कोई उपयोगकर्ता लॉग आउट करने के भूल जाता है, मेरी servelt उत्पन्न एचटीएमएल है:ब्राउज़र बंद करने का पता कैसे लगाएं?
<meta http-equiv="Refresh" content="30; url=My_Servlet?User_Action=logout&User_Id=1111">
टैग में
स्वचालित रूप से उसे बाहर लॉग इन करें।
लेकिन मैंने देखा है कि कई उपयोगकर्ता हमेशा के लिए हैं, कभी लॉग आउट नहीं हुए हैं। मुझे पता चला कि, अपने ब्राउज़र को बंद करके, वे कभी भी मैन्युअल रूप से या स्वचालित रूप से लॉग आउट नहीं होते हैं, इसलिए उनके उपयोगकर्ता आईडी को वैध उपयोगकर्ता आईडी वेक्टर से कभी नहीं हटाया जाएगा।
तो, मेरा सवाल है: मैं अपने ब्राउज़र को बंद करने वाले उपयोगकर्ताओं का पता कैसे लगा सकता हूं, इसलिए मेरा सर्वलेट वेक्टर से अपने आईडी हटा सकता है?
सक्रिय उपयोगकर्ता सूची::
User_1 : Machine_1 [ IP_1 address ]
User_2 : Machine_2 [ IP_2 address ]
User_3 : Machine_3 [ IP_3 address ]
...
मैं कैसे कर
मैं सुरंग के अंत में कुछ प्रकाश देखते हैं, लेकिन वहां अभी भी एक समस्या है, मेरे कार्यक्रम कुछ इस तरह है पता है, सत्र श्रोता से, किस उपयोगकर्ता का सत्र समाप्त हो गया है और इसलिए उसे मेरी सूची से हटा दें?
मैं उम्मीद कर रहा था कि सत्र समाप्त होने पर, HttpServlet की destroy()
विधि को कॉल किया जाएगा और मैं वहां उपयोगकर्ता आईडी को हटा सकता हूं, लेकिन जब उपयोगकर्ता अपने ब्राउज़र को बंद करता है तो इसे कभी नहीं कहा जाता है, क्यों? और क्या HttpServlet में कोई अन्य तरीका है जिसे सत्र बंद होने पर बुलाया जाता है?
BTW - मैं पता नहीं कोड मैं जुड़ा हुआ है कि कैसे एक क्लस्टर/एकाधिक वी एम वातावरण में काम करेंगे। मुझे बहुत अच्छा संदेह नहीं होगा। –
यह लिंक http://www.stardeveloper.com/articles/display.html?article=2001112001&page=1 टूटा हुआ है। अपना उत्तर अपडेट करें। – OO7