2012-09-04 32 views
6

मेरे पास एक जेएसएफ एप्लिकेशन है जो एक प्रबंधित बीन में, रिमोट स्टेटस सत्र बीन (ईजेबी 3.0) से व्यवसाय तर्क को कॉल करता है।क्या स्टेटस सत्र बीन्स एक रिसाव का कारण बन सकता है जब @Remove एनोटेटेड विधि कहा जाता है?

अभी एक HttpSessionListener है जो उस राज्यव्यापी सत्र बीन पर @Remove एनोटेटेड विधि को कॉल करता है, ताकि राज्य सत्र सत्र बीन को कंटेनर द्वारा हटाया जा सके जैसे ही HttpSession नष्ट हो जाता है।

अब मुझे आश्चर्य है कि क्या होता है यदि मैं उसे @Remove एनोटेटेड विधि नहीं कहता और HttpSession नष्ट हो जाता है। राज्य सत्र सत्र बीन का ग्राहक तब कोई लॉगर मौजूद नहीं है। कंटेनर कभी राज्य सत्र सत्र बीन हटा देगा? या यह किसी प्रकार की रिसाव (स्मृति/डिस्क) के कारण हमेशा के लिए अस्तित्व में रहेगा?

उत्तर

9

हां, कंटेनर अप्रयुक्त राज्यव्यापी सत्र बीन को हटा देगा जब यह समय-समय पर हो जाएगा। वैसे भी, @Remove एनोटेटेड विधि को कॉल करते समय बीन के राज्य की अब आवश्यकता नहीं है पैटर्न का पालन करना है।

राज्य के सत्र सत्रों को हटाने का समय आपके एप्लिकेशन सर्वर की सेटिंग्स में सेट किया जा सकता है।

4

यदि @Remove एनोटेशन निर्दिष्ट नहीं है तो राज्यव्यापी बीन निर्दिष्ट समय-समय पर संदर्भ में रहेगा। यह सीधे रिसाव नहीं कहता है, लेकिन यदि आप निर्भरता का सही ढंग से प्रबंधन नहीं कर रहे हैं और कुछ संदर्भ शेष हैं तो आपके पास संभावित मेमोरी लीक हो सकती है। इसलिए @Remove एनोटेशन का उपयोग करने की सलाह दी जाती है।