सत्र बीन्स (स्टेटलेस सत्र सेम, स्टेटस सत्र बीन्स) सिंक्रनाइज़ हैं?ईजेबी और सिंक्रनाइज़ेशन
उत्तर
एक समय में केवल एक ही धागा आपके सेम तक पहुंच जाएगा। यह प्रबंधित करने के लिए एप्लिकेशन सर्वर पर निर्भर है। तो आपको अपने सेम के भीतर से सिंक्रनाइज़ नहीं किया जाना चाहिए। यही कारण है कि EntityManager जैसी गैर-थ्रेडसेफ एक आवृत्ति मान हो सकती है और सिंक्रनाइज़ेशन समस्या नहीं हो सकती है।
हाँ ठीक है, लेकिन किसी ने इस प्रश्न को एक साक्षात्कार में पूछा और मैंने उसी तरह उत्तर दिया लेकिन वह मेरे जवाब से संतुष्ट नहीं था। –
यह हमेशा संभव है कि उनके पास कोई सुराग न हो। –
बिल्कुल। इसके अलावा, नया @AccessTimeout एनोटेशन आपको एक पोर्टेबल तरीके से कॉन्फ़िगर करने की अनुमति देता है, वास्तव में आप एक कॉलिंग थ्रेड को एक उदाहरण के लिए प्रतीक्षा करने के लिए कितना समय तक प्रतीक्षा करना चाहते हैं। यह भी ध्यान रखें कि नए @ सिंगलेटन बीन को बहुप्रचारित पहुंच की अनुमति देने के लिए कॉन्फ़िगर किया जा सकता है लेकिन डिफ़ॉल्ट रूप से ऐसा नहीं है। यह निर्णय सभी सत्र बीन्स (@ स्टेटलेस, @ स्टेटेटफुल, @ सिंगलेटन) के लिए डिफ़ॉल्ट नियमों के पीछे स्थिरता बनाए रखने के प्रयासों में किया गया था –
ईजेबी बीन्स के बारे में बहुत ही सही बात यह है कि एक बार जब आप ईजेबी 3.0 बीन्स बनाते हैं तो ईजेबी के तरीके डिफ़ॉल्ट रूप से सिंक्रनाइज़ होते हैं।
उदा
@Statelss कक्षा EJBclass {
शून्य someMethod() {}
}
अबअगर आप इस सिंक्रनाइज़ someMethod की तरह उस पर सिंक्रनाइज़ नहीं किया जा सकता है यह त्रुटि दर्शाएगी यह स्तर सिंक्रनाइज़ किया गया है।
ईजेबी 3.0 बीन्स स्मार्ट हैं और प्रदर्शन अच्छा है।
एंटरप्राइज़ जावा बीन्स सिंक्रनाइज़ नहीं हैं। चूंकि सत्र बीन्स ईजेबी कंटेनर द्वारा बनाए रखा जाता है, इसलिए आपको एप्लिकेशन स्तर में सिंक्रनाइज़ेशन तर्क लागू करना होगा।
क्या आप इस बारे में निश्चित हैं? मुझे लगता है कि जेईई मानक बहुत स्पष्ट है और केवल इकाई बीन्स अपनी विधियों के लिए मौजूदा पहुंच की कॉन्फ़िगरेशन की अनुमति देता है। कृपया मुझे सुधारें अगर मैं गलत हूं। – icordoba
सत्र बीन का मतलब है कि लॉग इन उपयोगकर्ता है। यदि उपयोगकर्ता गलती से UI कार्रवाई पर डबल क्लिक करता है तो दो http अनुरोध दो अलग-अलग धागे में बनाए जाते हैं।
- स्टेटलेस बीन्स सिंक्रनाइज़ नहीं हैं। प्रत्येक धागे को अलग-अलग उदाहरण मिलेंगे और दोनों तर्क को तर्कसंगत तरीके से निष्पादित कर रहे हैं। दोनों एक ही संसाधनों तक पहुंच सकते हैं!
- स्टेटफुल बीन्स कंटेनर द्वारा सिंक्रनाइज़ किए जाते हैं। दोनों धागे एक ही ejb उदाहरण मिलेगा। दूसरा धागा पहले को खत्म करने का इंतजार कर रहा है। कोई बात नहीं।
स्टेटलेस/स्टेटफुल सत्र बीन्स थ्रेड सुरक्षित हैं। क्योंकि प्रत्येक अनुरोध को बीन का एक समर्पित उदाहरण मिलेगा और इसलिए इसे सिंक्रनाइज़ करने की आवश्यकता नहीं है।
सिंगलटन सत्र बीन्स साझा किए जाते हैं और कंटेनर (कंटेनर प्रबंधित कंसुरेंसी - सीएमसी) या उपयोगकर्ता (बीन प्रबंधित कंसुरेंसी - बीएमसी) द्वारा सिंक्रनाइज़ किए जाने की आवश्यकता होती है।
क्या सिंक्रनाइज़ किया गया? –
किसी ने मुझसे यह सवाल पूछा, सही जवाब क्या होना चाहिए? मुझे ईजेबी के अंदर कोई सिंक्रनाइज़ेड विधियां नहीं मिलीं, मैं कहूंगा कि ईजेबी सिंक्रनाइज़ नहीं है। लोगों से पूछने के लिए इस्तेमाल किया जाता है "हैशटेबल सिंक्रनाइज़ है?" –
तकनीकी रूप से आपका प्रश्न स्पष्ट नहीं है। क्या आपका मतलब है: सत्र बीन्स को थ्रेड सुरक्षित करने की आवश्यकता है? या सत्र सेम थ्रेड-सुरक्षित हैं? –