2011-12-15 13 views
20

मुझे समझ में आया कि स्थानीय इंटरफेस को उसी कंटेनर के जेवीएम इंस्टेंस में क्लाइंट के लिए डिज़ाइन किया गया है और रिमोट इंटरफेस ईजेबी कंटेनर के जेवीएम के बाहर रहने वाले ग्राहकों के लिए डिज़ाइन किया गया है। वेब एप्लिकेशन क्लाइंट के बारे में कैसे है जो समान नहीं है (या पैक किया गया है)। लेकिन एक ही जावा ईई सर्वर पर रहते हैं?ईजेबी 3 स्थानीय और रिमोट इंटरफेस

+2

क्यों आप एक ही EAR में webapp डाल नहीं होगा? ईएआर का बिंदु एक आवेदन के वेब और ईजेबी भागों दोनों को ठीक करना है। –

+0

'वही जे 2 ईई सर्वर' से आपका क्या मतलब है? क्या यह उसी डोमेन पर उसी डोमेन पर तैनात है? – jFrenetic

+1

ईएआर को अलग से बनाए रखा और तैनात किया गया है और अन्य डब्ल्यूएआर ईएआरबी में ईजीबी के रहने से कुछ व्यावसायिक तरीकों का उपयोग करना चाहता है। जे 2 ईई सर्वर का मतलब है कि वे उसी उदाहरण पर तैनात किए जाएंगे। – Thurein

उत्तर

25

आधिकारिक तौर पर @Local एनोटेटेड बीन्स केवल उसी एप्लिकेशन में पहुंचने पर ही पहुंचा जा सकता है। ए .war एक .ear (या अन्य .war या अन्य .jar ईजेबी) से अलग से तैनात एक अलग अनुप्रयोग है, भले ही एक ही अनुप्रयोग सर्वर उदाहरण पर तैनात किया गया हो।

वहाँ इस प्रकार कोई गारंटी कि आपके .war में कोड @Local EJB सेम कि .ear में परिभाषित कर रहे हैं कॉल कर सकते हैं है।

हालांकि, लगभग सभी एप्लिकेशन सर्वरों में अभ्यास में यह सिर्फ काम करता है।

वहाँ EJB 3.2 कल्पना के लिए एक अनुरोध आधिकारिक तौर पर स्थानीय पार आवेदन कॉल का समर्थन करने के लिए है: http://java.net/jira/browse/EJB_SPEC-22

+4

मुझे इस सुविधा पर वोट देने वाला एकमात्र ऐसा लगता है ... हर कोई - इसमें शामिल होने के लिए स्वतंत्र महसूस करें और इस जेआईआरए अनुरोध पर 'वोट' पर क्लिक करें ;-) –

+0

100% काम करना मुश्किल हो सकता है क्रॉस-एप्लिकेशन (क्रॉस क्लासलोडर!) कॉल करता है। क्लासलोडर 1 को क्लास ए और क्लासलोडर 2 में कक्षा ए (एक और प्रतिलिपि) है। स्थानीय इंटरफ़ेस के माध्यम से ऑब्जेक्ट ए पास करना क्लासकास्ट अपवाद का कारण बनता है क्योंकि एक ही कक्षा की दो प्रतियां होती हैं। एक ईएआर का अपना कभी-कभी अलग-अलग क्लासलोडर होता है। –

+0

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

0

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

हालांकि आपको अभी भी वेब एप्लिकेशन प्रोजेक्ट में ईजेबी इंटरफेस के साथ एक जार की आवश्यकता है।

संपादित करें और मैं जेबी निजेट से सहमत हूं, आप ईएआर के बाहर युद्ध क्यों चाहते हैं?

+0

क्लास लोडिंग शेंगेनियंस के कारण आप इसे अलग से तैनात करना चाहेंगे। –

0

रिमोट इंटरफेस को एप्लिकेशन के भीतर और साथ ही बाहर से, अन्य होस्टों से भी, एप्लिकेशन में कहा जा सकता है।

तो मान लें कि आपको दूरस्थ (@Remote) इंटरफ़ेस चाहिए। ईजेबी 3.1 में आप निर्भरता इंजेक्शन का उपयोग कर सकते हैं।

4

स्थानीय इंटरफेस का उपयोग उसी एप्लिकेशन के भीतर संचार में किया जाना चाहिए। इसका मतलब यह नहीं है कि JVM है।

बिंदु है: यहां तक ​​कि एक ही JVM उदाहरण के भीतर, एक ही सर्वर पर, दो अलग अलग अनुप्रयोगों स्थानीय इंटरफेस का उपयोग कर (जो स्थानीय और कोई इंटरफ़ेस विचारों का मतलब है) संवाद नहीं कर सकते हैं।

यदि आपके पास एक वेब घटक (डब्ल्यूएआर) के साथ-साथ एक व्यावसायिक घटक (ईजेबी-जेएआर) है जो एक ही एप्लीकेशन में है, तो सबसे सहज और सीधा समाधान उन्हें एक ईएआर या एक युद्ध में पैकेज करना है (क्योंकि जावा ईई 6)।

+2

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

+0

सहमत - मुझे यह विचार और बोझिल ईएआर दृष्टिकोण भी पसंद नहीं है, लेकिन यह आधिकारिक तौर पर सुझाए गए समाधान है। –

+1

मुझे जेईई लोगों पर शुरू न करें। पूरी बात एक नौकरी सुरक्षा परियोजना है। हम वर्षों से जटिल परियोजनाओं में इसका उपयोग कर रहे हैं, और मुझे कहना होगा कि हम PHP में 10 गुना अधिक उत्पादक थे। लेकिन आजकल PHP विभिन्न प्रमाणन लोगों के साथ "अनकॉल" है, और आपको आज टॉयलेट पेपर बेचने के लिए एक प्रमाण पत्र होना है, इसलिए हमें सभी को ब्लोटेड * टी का सामना करना पड़ेगा जो कुछ भी ठीक से नहीं करता है। यह मुझे एफ -35 की याद दिलाता है। ;) – bozo

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