मेरे सहयोगी मुझे कहा कि स्थानीय EJB का उपयोग कर अच्छा विचार
मैं दृढ़ता से असहमत है कि नहीं है। स्थानीय ईजेबीबहुत अच्छा विचार है, क्योंकि वे आपके व्यावसायिक तर्क को लागू करने के लिए बीन का सही प्रकार हैं। ईजेबी बीन्स की वर्तमान फसल बहुत हल्का वजन है इसलिए किसी भी कथित हेवीवेटनेस के कारण आपको उनसे बचने की ज़रूरत नहीं है।
इन प्रकार के सेम का सबसे बड़ा लाभ शायद उनके स्वचालित लेनदेन प्रबंधन है, जो कि किसी भी तरह का डेटाबेस काम करते समय बहुत अच्छा उपयोग करेगा।
यह केवल एंटरप्राइज़ अनुप्रयोगों के बारे में नहीं है जो जेएमएस कतारों और जटिल ईआईएस सिस्टम तक पहुंचने की आवश्यकता है। किसी भी वेब एप्लिकेशन को एक से अधिक समय में डेटाबेस में लिखने से बहुत फायदा होता है। लेन-देन के बिना, आप User
कहने के साथ समाप्त हो जाएंगे, जब भी कोई अपवाद या क्रैश होता है तो डेटाबेस में केवल आधा रास्ता जारी रहता है। और ईजेबी के बिना आपको अपने कोड को बहुत सारे वर्बोज start\commit\rollback
स्टेटमेंट्स के साथ कूड़े रखना होगा, अकेले अपने लेनदेन को प्रचारित करें (आमतौर पर 'कनेक्शन' के माध्यम से) अपने सभी कोड में और लेनदेन होने या सक्रिय नहीं होने के लिए अलग-अलग मामले हैं ।
ईजेबी बीन्स के साथ, यह जटिलता अभी चली जाती है। यह कचरा संग्रह बनाम मैनुअल मेमोरी प्रबंधन की तरह है।
कई अन्य दिलचस्प विशेषताएं हैं जिनमें वेब अनुप्रयोगों का सबसे सरल उपयोग भी घोषणात्मक भूमिका जांच (@RolesAllowed
), बीन्स (दूसरों के बीच थ्रॉटल थ्रूपुट करने के लिए) और थ्रेड-सुरक्षा की तरह उपयोग कर सकता है।
जावा ईई 6 में वे सरल वेब अनुप्रयोगों के लिए उपयोग करना आसान हो गए, और वहां वे हर जगह एक व्यक्ति में दिखाई दे सकते हैं (कोई अलग नहीं .jar और छाता। अब और आवश्यक है)।
तो मैं उलझन में हूं: जीडब्ल्यूटी सर्वलेट का उपयोग कब करें (यह एक साधारण HTTPServlet से अधिक सुविधाजनक है, यह आरपीसी-स्टाइल विधि आमंत्रण प्रदान करता है) और ईजेबी का उपयोग कब किया जाता है?
तो अब हम रिमोट ईजेबी के बारे में बात कर रहे हैं। इस मामले में जवाब अलग है।
यदि ग्राहक इंटरनेट से कनेक्ट हो रहे हैं, तो आप लगभग कभी भी दूरस्थ ईजेबी का उपयोग नहीं करेंगे। क्लाइंट पर बंदरगाहों सहित कई बंदरगाहों को आम तौर पर खोलने की आवश्यकता होती है।
इसी तरह, यदि आपके पास विषम क्लाइंट (.NET, C++, और यहां तक कि जावा क्लाइंट एएस के थोड़ा अलग संस्करण चला रहे हैं जो रिमोट ईजेबी उपयोग करता है) तो आप आम तौर पर रिमोट ईजेबी का उपयोग नहीं करेंगे।
सैद्धांतिक रूप से कोरबा (आईआईओपी) का समर्थन करने और इस प्रकार विभिन्न प्रकार के ग्राहकों को अनुमति देने के लिए रिमोट ईजेबी संचार केवल तभी काम करता है जब क्लाइंट और सर्वर जावा चला रहे हों और या तो एक ही एएस (एप्लीकेशन सर्वर) को छोड़कर या उनमें से एक है रिमोट सर्वर के लिए क्लाइंट लाइब्रेरीज़ के साथ एक जावा एसई क्लाइंट (जो विशाल हो सकता है)।
यह एक रिमोटिंग तकनीक के लिए थोड़ा अजीब है, लेकिन ईजेबी स्पेक यह भी निर्दिष्ट नहीं करता कि पहले स्थान पर रिमोट कनेक्शन कैसे स्थापित किया जाए। डी फैक्टो मानक रिमोट जेएनडीआई है, लेकिन चूंकि यह कल्पना नहीं है, जेबॉस उदा। जेबॉस एएस 7 में इसका समर्थन करना बंद करना चाहता था।
उन सभी मामलों में, आप रिमोट ईजेबी के बजाय Web Service
तकनीक का उपयोग करेंगे। GWT Servlet
एक विकल्प हो सकता है, लेकिन वास्तव में यहां एक कैननिकल उदाहरण नहीं है। जब तक आप पहले से ही जीडब्ल्यूटी का उपयोग नहीं कर रहे हैं, मैं इसे मनमाने ढंग से (गैर-जीडब्ल्यूटी) ग्राहकों से सामान्य वेब/आरपीसी कनेक्टिविटी के लिए स्थापित करने की अनुशंसा नहीं करता।
सामान्य जावा समाधान जेएक्स-डब्ल्यूएस और जेएक्स-आरएस हैं, जो एक एसओएपी रेस रीस्ट कार्यान्वयन हैं (दोनों को ईजेबी बीटीडब्ल्यू के साथ जोड़ा जा सकता है)। अच्छी तरह से ज्ञात जेएक्स-आरएस कार्यान्वयन Jersey (example) और RestEasy हैं। जावा ईई 6 में आपको उनके लिए कुछ भी इंस्टॉल करने की ज़रूरत नहीं है, क्योंकि वे पहले से ही मंच का हिस्सा हैं। जावा ईई 5 के लिए, आपको जेएक्स-आरएस को अलग से स्थापित करना होगा, लेकिन जेएक्स-डब्ल्यूएस पहले से ही वहां है।
लोग आम तौर पर जेएक्स-आरएस को शुरू करने के लिए आसान और अधिक आधुनिक दृष्टिकोण पाते हैं, हालांकि जेएक्स-डब्ल्यूएस में अधिक बिल्ड-इन टाइप-सुरक्षा विशेषताएं हैं (जो भी इसकी जटिलता से अधिक है)।
अंत में, जब हम दूरस्थ ईजेबी का उपयोग करते हैं? आम तौर पर, आप एक ही एएस चलाने वाले स्थानीय नेटवर्क पर अनुप्रयोगों के बीच संचार के लिए ऐसा करेंगे। उस स्थिति में, संभावित प्रदर्शन फायदे हैं (बाइनरी सीरियलाइजेशन जेसन/एक्सएमएल रूपांतरण से आगे और तेज हो सकता है) और सुरक्षा संदर्भ को प्रसारित करने और वितरित लेनदेन को समन्वयित करने के लिए कुछ शक्तिशाली विकल्प हैं। सरल वेब ऐप्स को आखिरी फीचर की आवश्यकता नहीं होती है, अगर अक्सर।
अक्सर देखा गया पैटर्न एक जेएक्स-आरएस संसाधन (बीन) है जो रिमोट (वेब) क्लाइंट से अनुरोध स्वीकार करता है, और फिर उस काम को स्थानीय ईजेबी में भेजता है जिसमें वास्तविक व्यापार तर्क होता है।
[यह मदद कर सकता है] (http://stackoverflow.com/questions/2013793/web-services-vs-ejb-vs-rmi-advantages-and-disadvantages)। – betomontejo