2010-09-11 21 views
7

मैंने अपना सत्र समय निर्धारित किया।ब्राउज़र बंद होने पर सत्र खो गया

<session-config> 
<session-timeout>11520</session-timeout> 

</session-config>

हर बार जब मैं सर्वलेट को फोन करके ब्राउज़र को बंद और इसे फिर से खोलने के लिए, मुझे लगता है कि नए सत्र बनाई गई है देखते हैं। ब्राउज़र को फिर से खोलने पर हर बार HttpSessionListener में निष्पादित सत्रक्रेटेड विधि से देखा जा सकता है।

मैं टॉमकैट/जावा में नया हूं, लेकिन अगर मैं एएसपी.नेट पर्यावरण में काम कर रहा था, तो मैं इसके आसपास काम करता हूं, उसी नाम के साथ कुकी नाम सेट कर रहा हूं।

टॉमकैट में इसके आसपास काम करने का सबसे अच्छा अभ्यास क्या है?

अग्रिम धन्यवाद।

डैनी।

उत्तर

9

प्रत्येक बार जब मैं ब्राउज़र बंद करता हूं और सर्वलेट को कॉल करके इसे फिर से खोलता हूं, तो मुझे लगता है कि नया सत्र बनाया गया है।

यह निर्दिष्ट व्यवहार का पालन करता है। सत्र कुकी में उम्र नहीं होती है, इसलिए यह तब तक रहता है जब तक क्लाइंट वेबब्रोसर उदाहरण खुला रहता है या जब तक क्लाइंट सर्वर के पक्ष में session-timeout सेटिंग में उल्लिखित वेबसाइट तक नहीं जाता है।

आप मूल रूप से एक कुकी चाहते हैं जो सत्र कुकी से अधिक समय तक रहता है। आप Cookie एपीआई का उपयोग करके एक नई लंबी जीवित कुकी बना सकते हैं, Cookie#setMaxAge() का उपयोग करके अपनी उम्र निर्धारित करें, इसे HttpServletResponse#addCookie() का उपयोग करके HTTP प्रतिक्रिया में जोड़ें। बाद के HTTP अनुरोधों पर आप HttpServletRequest#getCookies() का उपयोग कर कुकी की उपस्थिति निर्धारित कर सकते हैं।

यह टोमकैट विशिष्ट नहीं है। आप हर दूसरे servletcontainer पर भी ऐसा कर सकते हैं।

+0

के लिए धन्यवाद अपने तेज उत्तर। क्या मैं web.xml में अधिकतम कुकी उम्र सेट कर सकता हूं या HttpSesisonListener Sesison बनाई गई विधि में? –

+0

इसे 'फ़िल्टर' में करें। वहां आपके हाथों में 'HttpServletReponse' है। आप जांच सकते हैं कि सत्र 'HttpSession # isNew() 'द्वारा नया है या नहीं। – BalusC

9

मैं बाहर, in a similar question पाया गया कि यह अब सर्वलेट 3.0 में समर्थित है:

<session-config> 
    <session-timeout>11520</session-timeout> 
    <cookie-config> 
    <max-age>11520</max-age> 
    </cookie-config> 
</session-config> 

(एक छोटी सी थोड़ी देर हो चुकी है, लेकिन मुझे उम्मीद है कि इस किसी के लिए उपयोगी हो सकता है और कुछ भी)

+1

बस जो मैं ढूंढ रहा हूं! यह सबसे अच्छा जवाब है। – Dmitry

+0

धन्यवाद, आपने मुझे बचाया :) – Oneiros

+0

अच्छे सुझाव के लिए धन्यवाद –

संबंधित मुद्दे