2012-01-16 16 views
6

एप्लिकेशन सर्वर स्टेटलेस ईजेबी को पूल करने का कारण क्या है?स्टेटलेस ईजेबी क्यों पूल किए जाते हैं?

मैं समझ सकता हूं कि इनकमिंग इनोकेशन के लिए एप्लिकेशन के वर्कलोड को नियंत्रित करना उपयोगी है, लेकिन यह केवल ईजेबी के पूलिंग को उचित ठहराता है जो सर्वर को चालक ग्राहक के साथ फैकैड के रूप में सर्वर करता है।

क्या आंतरिक ईजेबी को पूल करने के लिए इसका कोई लाभ है (वे जो प्रकट नहीं होते हैं और केवल व्यावसायिक तर्क करने के लिए आंतरिक रूप से आवेदित होते हैं) ?? एक साझा एकल उदाहरण (जैसे स्प्रिंग करता है) का उपयोग करने के बजाय।

मैं कम से कम एक नकारात्मक पक्ष के बारे में सोच सकता हूं: अत्यधिक उपयोग किया जाने वाला आंतरिक ईजेबी एक बाधा के रूप में कार्य कर सकता है।

उत्तर

3

स्टेटलेस सत्र बीन ईजेबी आवश्यक रूप से थ्रेड-सुरक्षित नहीं हैं। वे जेएमएस सत्र जैसे संसाधन धारण कर सकते हैं जिन्हें एक समय में एक से अधिक धागे के साथ साझा नहीं किया जा सकता है, इसलिए सर्वर उन्हें पूल करेगा ताकि वह उसी बीन के साथ कई अनुरोधों को समेकित कर सके (जेएमएस संसाधन भी पूल किए गए हैं, लेकिन मैं बस उदाहरण के लिए इसका उपयोग कर)।

+0

यदि यह स्टेटलेस है, तो राज्य को सहमति के साथ धमकी नहीं दी जाती है, तो कोई भी दौड़ की स्थिति प्रकट नहीं हो सकती है, इसलिए वे थ्रेड-सुरक्षित हैं, क्या मैं गलत हूं? हां, मुझे पता है कि उनके पास इंजेक्शन संसाधनों की तरह कुछ राज्य है, लेकिन फिर शायद उन्हें स्टेटलेस नहीं कहा जाना चाहिए! :) मैं जवाब सही के रूप में लेता हूं। – edutesoy

+0

@edutesoy मैं आपकी व्याख्या के साथ सहमत हूं। लेकिन फिर राज्य को क्यों बनाए रखा जाता है। –

3

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

विशेष रूप से, मुझे इसके लिए कोई प्रदर्शन लाभ नहीं दिख रहा है। मैंने जेबॉस (6, आईआईआरसी) में स्टेटलेस बीन्स के कार्यान्वयन के माध्यम से प्रेरित किया, और इसका केवल बीन उदाहरण ही पूल किया गया है; विधि आमंत्रण को संभालने के लिए नलसाजी हर बार उपयोग किए जाने पर खरोंच से फिर से बनाई जाती है। इसका मतलब है कि एकमात्र प्रदर्शन बचत एक वस्तु वस्तु निर्माण है, जो कि थोड़ी सी अवधि होनी चाहिए। एकमात्र ऐसी स्थिति जिसमें मैं इसे गैर-तुच्छ मान सकता हूं वह यह है कि यदि बीन हेवीवेट संसाधन प्राप्त करता है, और इन्हें आमंत्रण के बीच रखता है। हालांकि, उस स्थिति में, बीन वास्तव में एक गौरवशाली, बुरी तरह से प्रबंधित, पूल के रूप में उपयोग किया जा रहा है; सही समाधान संसाधन को सीधे पूल करना होगा!

अब, ईजेबी काफी समय से रहा है। वापस जब वे पहली बार बाहर आए, वस्तु निर्माण महंगा था, इसलिए उन्हें पूल करने के लिए समझ में आया। लेकिन उन दिनों लंबे समय से चले गए हैं। ईजेबी 3 में पूलिंग क्यों नहीं छोड़ी गई थी?

+0

खैर, मुझे लगता है कि यदि आपके पास हजारों समवर्ती अनुरोध हैं, तो उन्हें @ सिंगलेटन के रूप में बनाने के लिए उन्हें पूल करने के लिए समझदारी होती है, जब तक कि आप सुनिश्चित हों कि वे स्मृति में हजारों उदाहरण होने के बजाय थ्रेड सुरक्षित हैं। –

+1

यदि बीन थ्रेडसेफ है, तो हाँ, एक सिंगलटन आदर्श है। लेकिन यदि नहीं, तो पूल और फेंकने वाले उदाहरणों से स्मृति भार समान होगा; पूल किए गए उदाहरण वास्तव में कचरा कलेक्टर * अधिक * काम करने के लिए देंगे, क्योंकि वे नर्सरी से बचने के लिए काफी लंबे समय तक रहते हैं। –

+0

यह एक बड़ा दावा है। मुझे लगता है कि यह प्रत्येक अनुरोध को संसाधित करने के समय पर निर्भर करता है और इसलिए उन वस्तुओं को पूल में खर्च करने का समय लगता है। यदि उनमें से अधिकतर किसी भी समय उपयोग किया जा सकता है तो आपको बनाने/नष्ट करने पर कुछ लाभ हो सकता है। यह यातायात के रुझानों पर भी निर्भर करता है, आदि। यह बहुत बढ़िया अनाज विश्लेषण आईएमओ है :) –

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