2011-01-30 21 views
12

यदि मेरे पास @ManagedBean है जो @SessionScoped है, तो मैं @Stateful ईजेबी का उपयोग क्यों करूं? मैंने इसे शॉपिंग कार्ट के लिए पहले इस्तेमाल किया था और एक वार्तालाप राज्य बनाए रखा था, लेकिन चूंकि एक प्रबंधित बीन उपयोगकर्ता सत्र के दौरान रखा जाएगा, इसलिए मैं वहां राज्य स्टोर कर सकता हूं, फिर बोसनेस तर्क के लिए एसएलएसबी को कॉल कर सकता हूं। क्या वो सही है? यदि ऐसा है, तो जब आप लेनदेन की आवश्यकता होती है तो अधिक विशिष्ट अनुप्रयोगों के लिए राज्यिक ejbs छोड़ा जाएगा?सत्रकॉप्ड प्रबंधित बीन बनाम स्टेटफुल ईजेबी

उत्तर

13

अक्सर कई व्यावसायिक समस्याओं के लिए स्टेटलेस सत्र बीन्स का उपयोग किया जा सकता है।

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

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

हालांकि ...

रिमोट स्विंग ग्राहकों दूरस्थ EJBs से बात कर रही है कि आम नहीं हैं।

आपके प्रश्न में वर्णित संदर्भ में, आप आम तौर पर स्थानीय ईजेबी का उपयोग करेंगे और आप अधिकांश सत्र HTTP सत्र में साझा करेंगे (साझा करने से सावधान रहें!) और इन दिनों दृश्य क्षेत्र या वार्तालाप के दायरे में।

तो आखिरकार, इस परिदृश्य में राज्य सत्र सत्र बीन्स का उपयोग कब करें?

JPA में एक महत्वपूर्ण उपयोग केस extended persistence context है। आम तौर पर एक लेनदेन स्कोप्ड इकाई प्रबंधक के साथ, जब कोई इकाई ईजेबी विधि कॉल की लेनदेन सीमा पार करती है तो इसे अलग कर दिया जाएगा। यदि आप उपयोगकर्ता इंटरैक्शन के बीच एक इकाई को लॉक करना चाहते हैं (आशावादी रूप से), यह अवांछनीय है। आप लॉक खो देंगे।

एक विस्तारित दृढ़ता संदर्भ के साथ, इकाई संलग्न बनी हुई है और जब आप कॉल से राज्य सत्र सत्र बीन में वापस आते हैं तो ताले वैध होते हैं। पूर्वावलोकन कार्यक्षमता के लिए यह बहुत उपयोगी है कि यह सुनिश्चित करने के लिए कि जब भी आप पूर्वावलोकन के बाद ठीक हो जाएं तो किसी और ने इकाई में कोई बदलाव नहीं किया है। या वास्तव में एक शॉपिंग कार्ट के लिए जहां आप आश्वस्त करना चाहते हैं कि कुछ समय के लिए आइटम कार्ट में रहते हुए किसी और को बेचा नहीं जा सकता है।

+0

बहुत विस्तृत उत्तर के लिए धन्यवाद। मैंने सोचा कि राज्य के सेम का उपयोग बहुत ही विशिष्ट हो गया था – arg20