2012-03-01 13 views
10

में सिंगलेटन मेरे पास एक ईजेबी है जिसे एक सिंगलटन और स्टेटफुल होने की आवश्यकता है क्योंकि यह एक तरह का कनेक्शन पूल होगा। मेरे प्रश्न हैं:जावा ईजेबी

  • अगर मैं @Singleton टिप्पणी के साथ एक EJB को परिभाषित, यह तो डिफ़ॉल्ट रूप से स्टेटफुल हो जाएगा या मैं @Stateful भी साथ इसे परिभाषित करने की क्या ज़रूरत है?
  • क्या यह @Stateless एनोटेशन के साथ हो सकता है?

इस बारे में कुछ दस्तावेज खोजने का प्रयास किया लेकिन अब तक कोई भाग्य नहीं है, इसलिए ज्ञान वाले किसी भी व्यक्ति को कृपया अपना ज्ञान और शायद एक लिंक या दो साझा करें।

उत्तर

13

ईजेबी tutorials दिखाता है कि एक ईजेबी या तो सिंगलटन या स्टेटफुल या स्टेटलेस हो सकता है। मैंने कभी इन टिप्पणियों में से एक से अधिक का उपयोग करने की कोशिश नहीं की है, लेकिन मुझे काफी आश्वस्त है कि सही काम करना केवल उनमें से एक का उपयोग करना है।

उस लिंक से:

सिंगलटन सत्र सेम ग्राहक के बीच अपने राज्य को बनाए रखने के आमंत्रण

तो, आपके सवाल का:

अगर मैं @Singleton के साथ एक EJB को परिभाषित एनोटेशन तब डिफ़ॉल्ट रूप से स्टेटफुल होगा या क्या मुझे इसे @ स्टेटफुल के साथ परिभाषित करना होगा?

यदि राज्य के लिए आप अपने राज्य को बनाए रखने की क्षमता का मतलब है, तो जवाब है: हाँ, सिंगलटन डिफ़ॉल्ट रूप से स्टेटफुल होगा।

ध्यान रखें कि कुछ विशेष स्थितियां हैं जिनमें सिंगलटन सिंगलटन की तरह व्यवहार नहीं करता है, इस बारे में article पढ़ें। आम तौर पर, यदि आप क्लस्टर के बाहर हैं और डिफ़ॉल्ट कन्स्ट्रक्टर का उपयोग करने से बचते हैं तो आप इस तरह के जोखिम को नहीं चलाते हैं: आपको किसी अन्य ईजेबी या वेब क्लाइंट में इंजेक्शन करके ईजेबी के संदर्भों का उपयोग करने की आवश्यकता है:

@EJB MyEJB myEJB; 

अंत में, जावा ईई 6 ट्यूटोरियल के बारे में this भाग देखें, ईजेबी लाइफसाइकिल के बारे में, यह बताते हुए कि राज्य और अन्य ईजेबी के बीच मुख्य अंतर कंटेनर द्वारा अपने जीवन के दौरान निष्क्रिय होने की क्षमता है। यह अंतर मुख्य कारण है कि कथन "एक सिंगलटन डिफ़ॉल्ट रूप से स्टेटफुल है" कड़ाई से बोलना सही नहीं है, लेकिन आपके प्रश्न के संदर्भ में सही है।

+0

कुछ अच्छे दिशानिर्देशों के लिए धन्यवाद। मैं थोड़ा चिंतित हूं क्योंकि यह जावा ईई 6 ट्यूटोरियल में कहता है: "जीवन चक्र के अंत में, ईजेबी कंटेनर @PreDestroy एनोटेटेड विधि को कॉल करता है, यदि यह मौजूद है। सिंगलटन सत्र बीन अब कचरा संग्रह के लिए तैयार है। " क्या यह तब होता है जब मैं अपना एप्लिकेशन सर्वर बंद करता हूं या यह अन्यथा हो सकता है? – Marthin

+1

मेरा अनुभव यह है कि यह तभी होगा जब ऐप निष्क्रिय हो या बेरोजगार हो या सर्वर बंद हो जाए। – perissf

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