2010-08-14 13 views
11

में क्लाइंट जार का उपयोग करना मैं ईजेबी 3 के लिए नया हूं और कुछ संदेहों से काफी उलझन में हूं जो Google ने संतोषजनक उत्तर प्रदान नहीं किया है।ईजेबी 3 और डिजाइन पैटर्न

मैं कुछ बेस क्लास और कुछ उपयोगिता विधियों के साथ एक ढांचा बनाने की कोशिश कर रहा हूं जो मेरे अन्य अनुप्रयोगों का उपयोग कर सकते हैं। सभी अनुप्रयोगों को एक ही सर्वर पर तैनात किया जाना है।

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

मैं projApps में एक परियोजना projCommon कहा जाता है में सभी इंटरफेस और सेम परिभाषाओं रखने का फैसला किया। दूरदराज के इंटरफेस जो कि बीन कक्षाएं कार्यान्वित करती हैं ProjCommon में हैं। तो projApps projCommon पर निर्भर है।

मैं बीन कक्षाओं का आह्वान करने के लिए projCommon में परिभाषित एक प्रतिनिधि विधि का उपयोग करने की योजना बना रहा हूं। इसका मतलब यह होगा कि projCommon ProjApps, आरटी पर भी निर्भर है? और एक परिपत्र निर्भरता के लिए नेतृत्व।

ईजेबी की प्रत्यक्ष इंजेक्शन कितनी सटीक है?

वास्तव में उपयोगी होगा यदि आप कृपया मेरे संदेहों के लिए स्पष्टीकरण प्रदान कर सकते हैं।

उत्तर

22

जब मैं किसी नए EJB ग्रहण में 3.0 प्रोजेक्ट बनाने के लिए कोशिश कर रहा हूँ वह पूछता है कि मैं भी एक ग्राहक जार बनाना चाहते हैं। क्या उद्देश्य इस क्लाइंट जार सेवा करता है?

एक EJB ग्राहक JAR फ़ाइल एक वैकल्पिक JAR फ़ाइल है कि सभी वर्ग फ़ाइलों है कि एक ग्राहक कार्यक्रम उद्यम सेम कि EJB जार फ़ाइल में निहित हैं की ग्राहक दृश्य का उपयोग करने की जरूरत है शामिल कर सकते हैं है। आप एक EJB मॉड्यूल के लिए एक ग्राहक JAR फ़ाइल बनाने के लिए नहीं, फैसला करते हैं तो ग्राहक इंटरफ़ेस कक्षाओं के सभी EJB जार फ़ाइल

मेरे ejbmodule EAR फ़ाइल की एक भाग के रूप में जोड़ा जाता है में हो जाएगा। तो क्या मुझे वास्तव में इस क्लाइंट जार की आवश्यकता है?

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

क्या मुझे स्थानीय और रिमोट इंटरफेस दोनों बनाने की आवश्यकता है? या बस रिमोट इंटरफेस करेंगे?

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

मैं सभी इंटरफ़ेस एक परियोजना projCommon बुलाया में और projApps में सेम परिभाषाओं रखने का फैसला किया। रिमोट इंटरफेस जो बीन कक्षाएं कार्यान्वित करती हैं projCommon में हैं। तो projApps projCommon पर निर्भर है।

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

ईजेबी के सीधे इंजेक्शन कैसे हैं?

यह कैसे काम करता है इससे कोई फर्क नहीं पड़ता, यह कंटेनर द्वारा किया जा रहा है। जे 2 ईई का पूरा बिंदु यह बताता है कि कैसे।

http://www.developer.com/print.php/3650661 के अनुसार:

EJB 3 कंटेनरों राज्यविहीन सत्र बीन्स में संसाधनों के विभिन्न प्रकार सुई सुविधाएं प्रदान करते हैं। आम तौर पर, क्लाइंट अनुप्रयोगों से उपयोगकर्ता कार्यों या प्रक्रिया अनुरोधों को करने के लिए, सत्र बीन में व्यावसायिक विधियों को एक या अधिक प्रकार के संसाधनों की आवश्यकता होती है। ये संसाधन अन्य सत्र बीन्स, डेटा स्रोत, या संदेश कतार हो सकते हैं।

स्टेटलेस सत्र बीन का उपयोग करने का प्रयास करने वाले संसाधनों को एनोटेशन या तैनाती वर्णनकर्ताओं का उपयोग करके इंजेक्शन दिया जा सकता है। संसाधनों को इंस्टेंस वैरिएबल या सेटटर विधियों की एनोटेशन की एनोटेशन द्वारा अधिग्रहित किया जा सकता है। अधिक जानकारी के लिए

0

here देखें। उममीद है कि इससे मदद मिलेगी।

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