2012-09-18 6 views
5

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

इसलिए मैंने उलझन में: GWT सर्वलेट का उपयोग कब किया है (यह सरल HTTPServlet से अधिक सुविधाजनक है, यह आरपीसी-स्टाइल विधि आमंत्रण प्रदान करता है) और ईजेबी का उपयोग कब किया जाता है?

पीएस मैं जेपीए 2.0, सीडीआई इत्यादि जैसे किसी भी वायदा का उपयोग नहीं करता (क्योंकि मैं केवल WAS 7 पर जावा ईई 5 का उपयोग कर सकता हूं)।

+0

[यह मदद कर सकता है] (http://stackoverflow.com/questions/2013793/web-services-vs-ejb-vs-rmi-advantages-and-disadvantages)। – betomontejo

उत्तर

9

मेरे सहयोगी मुझे कहा कि स्थानीय EJB का उपयोग कर अच्छा विचार

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

इन प्रकार के सेम का सबसे बड़ा लाभ शायद उनके स्वचालित लेनदेन प्रबंधन है, जो कि किसी भी तरह का डेटाबेस काम करते समय बहुत अच्छा उपयोग करेगा।

यह केवल एंटरप्राइज़ अनुप्रयोगों के बारे में नहीं है जो जेएमएस कतारों और जटिल ईआईएस सिस्टम तक पहुंचने की आवश्यकता है। किसी भी वेब एप्लिकेशन को एक से अधिक समय में डेटाबेस में लिखने से बहुत फायदा होता है। लेन-देन के बिना, आप User कहने के साथ समाप्त हो जाएंगे, जब भी कोई अपवाद या क्रैश होता है तो डेटाबेस में केवल आधा रास्ता जारी रहता है। और ईजेबी के बिना आपको अपने कोड को बहुत सारे वर्बोज start\commit\rollback स्टेटमेंट्स के साथ कूड़े रखना होगा, अकेले अपने लेनदेन को प्रचारित करें (आमतौर पर 'कनेक्शन' के माध्यम से) अपने सभी कोड में और लेनदेन होने या सक्रिय नहीं होने के लिए अलग-अलग मामले हैं ।

ईजेबी बीन्स के साथ, यह जटिलता अभी चली जाती है। यह कचरा संग्रह बनाम मैनुअल मेमोरी प्रबंधन की तरह है।

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

जावा ईई 6 में वे सरल वेब अनुप्रयोगों के लिए उपयोग करना आसान हो गए, और वहां वे हर जगह एक व्यक्ति में दिखाई दे सकते हैं (कोई अलग नहीं .jar और छाता। अब और आवश्यक है)।

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

तो अब हम रिमोट ईजेबी के बारे में बात कर रहे हैं। इस मामले में जवाब अलग है।

यदि ग्राहक इंटरनेट से कनेक्ट हो रहे हैं, तो आप लगभग कभी भी दूरस्थ ईजेबी का उपयोग नहीं करेंगे। क्लाइंट पर बंदरगाहों सहित कई बंदरगाहों को आम तौर पर खोलने की आवश्यकता होती है।

इसी तरह, यदि आपके पास विषम क्लाइंट (.NET, C++, और यहां तक ​​कि जावा क्लाइंट एएस के थोड़ा अलग संस्करण चला रहे हैं जो रिमोट ईजेबी उपयोग करता है) तो आप आम तौर पर रिमोट ईजेबी का उपयोग नहीं करेंगे।

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

यह एक रिमोटिंग तकनीक के लिए थोड़ा अजीब है, लेकिन ईजेबी स्पेक यह भी निर्दिष्ट नहीं करता कि पहले स्थान पर रिमोट कनेक्शन कैसे स्थापित किया जाए। डी फैक्टो मानक रिमोट जेएनडीआई है, लेकिन चूंकि यह कल्पना नहीं है, जेबॉस उदा। जेबॉस एएस 7 में इसका समर्थन करना बंद करना चाहता था।

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

सामान्य जावा समाधान जेएक्स-डब्ल्यूएस और जेएक्स-आरएस हैं, जो एक एसओएपी रेस रीस्ट कार्यान्वयन हैं (दोनों को ईजेबी बीटीडब्ल्यू के साथ जोड़ा जा सकता है)। अच्छी तरह से ज्ञात जेएक्स-आरएस कार्यान्वयन Jersey (example) और RestEasy हैं। जावा ईई 6 में आपको उनके लिए कुछ भी इंस्टॉल करने की ज़रूरत नहीं है, क्योंकि वे पहले से ही मंच का हिस्सा हैं। जावा ईई 5 के लिए, आपको जेएक्स-आरएस को अलग से स्थापित करना होगा, लेकिन जेएक्स-डब्ल्यूएस पहले से ही वहां है।

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

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

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

+0

महान जानकारी ... – Jmoney38

0

यह आपके आवेदन/परियोजना आवश्यकता के दायरे पर निर्भर है। ईजेबी जावा ईई सुविधाओं का समर्थन करने के लिए प्रयोग किया जाता है। इसमें आपके प्रोजेक्ट स्कोप में शामिल नहीं है। इसका इस्तेमाल न करें। Java EE Features

+0

जावा ईई सुविधाओं के तहत आपका क्या मतलब है? मुझे लगता है कि मैं ईजेबी का उपयोग किए बिना जेपीए, आरईएसटी, एसओएपी, सीडीआई आदि का उपयोग कर सकता हूं। तो ईजेबी का उपयोग कब करें? – MyTitle

+0

हां, आप ईजेबी का उपयोग किए बिना उनका उपयोग कर सकते हैं। लेकिन, आपको लेनदेन को मैन्युअल रूप से नियंत्रित करना होगा (बीन प्रबंधन लेनदेन)। वसंत के बारे में कैसे? – CycDemo

+0

'वसंत के बारे में कैसे?' वर्तमान नौकरी में नहीं) – MyTitle

1

ईजेबी एक तकनीक है जो अपने कंटेनर पर बैक एंड में उपयोग की जाती है और डेवलपर्स के लिए पारदर्शी लेनदेन सुरक्षा आदि जैसी कुछ सुविधाएं देती है।

जावा ईई ट्यूटोरियल से

:

आप उद्यम सेम का उपयोग कर यदि आपके आवेदन निम्न आवश्यकताओं में से किसी है विचार करना चाहिए:

आवेदन स्केलेबल होना चाहिए। उपयोगकर्ताओं की बढ़ती संख्या को समायोजित करने के लिए, आपको एकाधिक मशीनों पर किसी एप्लिकेशन के घटकों को वितरित करने की आवश्यकता हो सकती है। न केवल विभिन्न एंटरप्राइज़ पर चलने वाले एप्लिकेशन के उद्यम बीन्स, बल्कि उनके स्थान ग्राहकों के लिए पारदर्शी रहेगा।

लेनदेन को डेटा अखंडता सुनिश्चित करना आवश्यक है। एंटरप्राइज़ बीन्स लेनदेन का समर्थन करते हैं, जो तंत्र साझा वस्तुओं की समवर्ती पहुंच का प्रबंधन करते हैं।

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

अब, जब आप एक वेब सर्वर में केवल वेब विकास कर रहे हैं, तो ईजेबी वास्तव में आपकी मदद नहीं करेगा और उदाहरण के लिए जीडब्ल्यूटी सर्वलेट जैसे अन्य आसान विकल्प हैं।

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

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