2010-12-14 11 views
24

पैकेजिंग ईजेबी एक नई परियोजना शुरू करना और एक वीएआर बनाम ईएआर में पैकेजिंग ईजेबी के पेशेवरों और विपक्ष को जानना चाहेंगे।जावाईई 6 WAR बनाम ईएआर

क्या जेएनडीआई अभी भी काम करेगा जब ईजेबी युद्ध में हैं? दक्षता? आदि।?

धन्यवाद।

उत्तर

52

एक अलग जार में EJB सेम होने के लिए एक महत्वपूर्ण प्रेरणा व्यापार तर्क और तर्क देखने की उम्र पुराने अलग होने के लिए है।

चूंकि ईजेबी को पूरी तरह से व्यावसायिक तर्क पर ध्यान केंद्रित करना है, इसलिए उन्हें एक अलग मॉड्यूल में रखना समझ में आता है।

यह पारंपरिक जावा एंटरप्राइज़ पुरालेख की सुविधा है। ईजेबी बीन्स एक जेएआर फ़ाइल में जाते हैं जो EJB module का प्रतिनिधित्व करता है, जबकि वेब संबंधित कलाकृतियों (फेसलेट्स, बैकिंग बीन्स, यूटिलिटी कोड) वेब आर्काइव (डब्ल्यूएआर) फ़ाइल में जाते हैं जो Web module का प्रतिनिधित्व करता है। ध्यान दें कि एक युद्ध वास्तव में एक फ़ाइल होना नहीं है। तथाकथित विस्फोटित प्रारूप में वे केवल निर्देशिकाएं हैं।

इस अलगाव का एक प्रमुख पहलू यह है कि उन दो मॉड्यूल एक वर्ग लोडर पदानुक्रम के माध्यम से पृथक हैं। Web module में EJB module से संसाधनों (आमतौर पर सेम) तक पहुंच है, और EJB module समग्र ईएआर छतरी में परिभाषित संसाधनों (आमतौर पर पुस्तकालयों) का संदर्भ दे सकता है। दूसरी दिशा संभव नहीं है। विशेष रूप से, EJB moduleWeb module में परिभाषित किसी भी संसाधन तक नहीं पहुंच सकता है।

यह प्रवर्तन जानबूझकर है।

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

फेसलेट्स के साथ इसकी तुलना करें, स्क्रिप्टलेट का उपयोग करने की अनुमति नहीं दे रहा है। यह फेसलेट को साफ रखता है और उन्हें घटक लेआउट और मार्कअप पर विशेष रूप से ध्यान केंद्रित करने देता है। इंटरफेस को कोडिंग के साथ एक और समानता है, जो अनुबंध को कार्यान्वयन से अलग करता है।

तो एक अलग ईजेबी मॉड्यूल होने पर वास्तव में सर्वोत्तम अभ्यास है। हालांकि ...

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

+0

तो मैं एक ** WAR फ़ाइल में पैक किए गए एप्लिकेशन में ** सभी ** जावा ईई प्रौद्योगिकियों का उपयोग कर सकता हूं? –

+1

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

+0

आप अलग हो सकते हैं और अभी भी वेब inf/lib सही में ejb जार डाल सकते हैं? –

4

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

तो, यदि आप एक युद्ध में या ईएआर में पैकेजिंग ईजेबी के पेशेवरों और विपक्ष के बारे में सोचते हैं, तो आपको इस बारे में सोचना चाहिए कि आपको कितनी सेवाओं की आवश्यकता है।

एचटीएच।

+0

यही वह जानना है जो मैं जानना चाहता था, जब ईजेबी एक ईएआर (अपने स्वयं के ईजेबी जार में अलग) में पैकेज हैं, तब भी उपलब्ध हैं जब ईजेबी एक डब्ल्यूएआर में पैकेज हैं। अब तक मुझे पता है कि आप जेएनडीआई लुकअप नहीं कर सकते हैं। – duvo

5

अभी तक मुझे यह मिला है।

युद्ध में EJB

पेशेवरों:

  1. सरल विकसित करने और तैनात

  2. आप @Path टिप्पणी के साथ बाकी सेवा के रूप में सत्र बीन तरीकों का खुलासा कर सकते हैं। here

विपक्ष देखें:

  1. JNDI देखने समर्थित नहीं है, तो मैं आपको एक और आवेदन ग्राहक

  2. से RMI ऐसा नहीं कर सकते के रूप में अर्जन ने बताया यह डिजाइन में प्रतिरूपकता का अभाव है विश्वास करते हैं।

+1

में युद्ध में ईजेबी तैनात नहीं कर सकते हैं, हालांकि स्पेस को डब्ल्यूएआरएस में ईजेबी को दूरस्थ रूप से सुलभ बनाने की आवश्यकता नहीं है, दोनों जेबॉस 7 और वेबलोगिक 12 सी आपको एक स्टैंडअलोन जावा क्लाइंट से एक्सेस करने की अनुमति देते हैं। तो जेएनडीआई लुकअप और आमंत्रण रिमोट क्लाइंट से काम करता है। – Raylite3

4

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

यह WAR पैकेजिंग से बहुत अलग ईजेबी लाइट है।

आपके पास ईजेबी जार का उपयोग करके कुछ लॉजिकल मॉड्यूलरिटी हो सकती है जिसे आप अपनी वेब प्रोजेक्ट में शामिल कर सकते हैं। लेकिन सभी मॉड्यूल एक ही वातावरण (jndi) साझा करते हैं, इसलिए कुछ नाम टकराव हो सकते हैं। एक ईएआर प्रोजेक्ट में प्रत्येक मॉड्यूल का अपना नामस्थान होता है।

2

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

जब मैंने नेटबीन 7.1.3, ग्लासफ़िश 3.1.2.2 और जेआरबेल का उपयोग करके WAR में ईजेबी का काम किया, तो मुझे एहसास हुआ कि जेआरबेल ईजेबी मॉड्यूल में किए गए परिवर्तनों को पुनः लोड करने के साथ ही सही काम करता है अगर इसे ईएआर पैकेज में तैनात किया गया था। अगर मैंने सरल युद्ध पैकेज बनाया है तो क्लासलोडर ने विकास चरण के दौरान बिल्कुल अजीब तरीके से व्यवहार किया और बहुत सारी यादृच्छिक बग का कारण बना।

किसी भी तरह सामान्य तैनाती में युद्ध पैकेज दूसरों द्वारा mentiod के रूप में सही काम किया।

इसके अलावा एक WAR पैकेज में NamedQuery तारों में परिवर्तन सहेजने और संकलित करने के बाद स्पष्ट नहीं था। अगर मैं ईएआर में पैक किया गया तो विकास चिकनी और तेज था। बेशक यह जेरेबेल में भी एक बग हो सकता है।

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

  • कोई संबंधित समस्या नहीं^_^