2012-01-26 14 views
6

नया जेएसआर 29 9 "जावा ईई के लिए संदर्भ और निर्भरता इंजेक्शन" "स्कोप" की अवधारणा पर आधारित प्रतीत होता है।क्या सीडीआई समझ में आता है यदि कोई वेब परत नहीं है और इसलिए कोई HTTP सत्र नहीं है?

बीन्स बनाए गए हैं और समर्थित स्कॉप्स में से एक से जुड़े हैं: एप्लिकेशन, सत्र (HTTP सत्र में मैप किया गया), वार्तालाप, और अनुरोध।

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

क्या ऐसी परिदृश्य में सीडीआई का उपयोग करना भी संभव है? इससे कौन से फायदे आएंगे?

उत्तर

3

यह मुझे मेरे अपने प्रश्न की याद दिलाता है मैं कुछ समय पहले से पूछा: How does @SessionScoped work with EJB? Is CDI only for web-tier?

ऐसा लगता है कि 'विषय-क्षेत्र' के विचार केवल HTTP सत्र के मामले में प्रासंगिक है।
हालांकि, अनुरोध एक HTTP-एक होने के बावजूद, मैं एप्लिकेशन-सिंगलटन बीन को लागू करने के तरीके के रूप में @ApplicationScoped स्कोप का वैध उपयोग देख सकता हूं।

Javadoc का कहना है:

आवेदन गुंजाइश सक्रिय है:

(...)

  • किसी भी जावा ईई वेब सेवा मंगलाचरण के दौरान

    ,

  • दौरान किसी भी

    किसी भी ईजेबी के किसी भी एसिंक्रोनस विधि आमंत्रण के दौरान, किसी भी ईजेबी का रिमोट विधि आविष्कार एक EJB टाइमआउट विधि करने के लिए और किसी भी EJB संदेश चालित सेम के लिए संदेश वितरण के दौरान किसी भी कॉल,

3

आप अपना स्वयं का स्कोप बना सकते हैं। सीडीआई बहुत एक्स्टेंसिबल है और विभिन्न स्थितियों में इसका इस्तेमाल किया जा सकता है। इसका उपयोग एसई अनुप्रयोगों में भी किया जा रहा है जहां न तो एक HttpSession और न ही HttpRequest है।

0

इसके अलावा, सीडीआई न केवल जीवन चक्र प्रबंधन के लिए है, आप इसका उपयोग निर्भरता इंजेक्शन करने के लिए कर सकते हैं जिससे इंटरफेस को उनके कार्यान्वयन से बहुत साफ तरीके से अलग किया जा सके। आप इंटरसेप्टर और सजावटी का उपयोग करके कुछ एओपी तकनीक भी कर सकते हैं, या सीडीआई घटनाओं का लाभ उठाकर एक बहुत ढीला-युग्मित पर्यवेक्षक पैटर्न बना सकते हैं।

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