2010-06-07 14 views
12

टॉमकैट एफएक्यू पर यह कहता है: "टोमकैट एक ईजेबी सर्वर नहीं है। टोमकैट एक पूर्ण जे 2 ईई सर्वर नहीं है।"एंटरप्राइज़ जावा बीन वास्तव में क्या है?

लेकिन अगर मैं:

  • उपयोग स्प्रिंग एक कनेक्शन पूलिंग के रूप में
  • कॉन्फ़िगर C3P0 (एक जेपीए प्रदाता के रूप में और प्रयोग हाइबरनेट) एक आवेदन संदर्भ की आपूर्ति करने
  • एनोटेशन जेपीए के साथ मेरी संस्थाओं व्याख्या डेटा स्रोत
  • @Transactional के साथ मेरी सेवा विधियों एनोटेट करें (और एटमिकोस जेटीए प्रदाता के रूप में उपयोग करें)
  • मार्शलिंग के लिए JAXB का उपयोग और unmarshalling
  • और संभवतः अपने ही JNDI क्षमता

तो मैं प्रभावी रूप से एक जावा EE अनुप्रयोग सर्वर की जरूरत नहीं है जोड़ सकता हूँ? और फिर मेरे बीन्स ईजेबी नहीं हैं? या क्या कोई अन्य परिभाषित विशेषता है?

यह क्या है कि जावा ईई अनुपालन ऐप सर्वर आपको यह बताता है कि आप आसानी से आसानी से/आसानी से टॉमकैट से कुछ तृतीय पक्ष उपप्रणाली के साथ नहीं मिल सकते हैं?

+3

एक साइड नोट के रूप में, अपाचे टॉमकैट का उपयोग पूर्ण जावाईई सर्वर के हिस्से के रूप में किया जा सकता है; अधिक विशेष रूप से जेबॉस या अपाचे गेरोनिमो। – Powerlord

+0

और हाल ही में, अपाचे टॉमई –

उत्तर

4

लेकिन अगर मैं जोड़ने (...) तो मैं प्रभावी रूप से एक जावा EE अनुप्रयोग सर्वर की जरूरत नहीं है? और फिर मेरे बीन्स ईजेबी नहीं हैं? या क्या कोई अन्य परिभाषित विशेषता है?

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

ईजेबी के संबंध में, ईजेबी विनिर्देश जेपीए से कहीं अधिक है और सत्र बीन्स और संदेश संचालित बीन्स भी निर्दिष्ट करता है (असल में, मैं वास्तव में जेपीए इकाइयों को ईजेबी के रूप में नहीं मानता हूं, भले ही जेपीए जावा ईई में ईजेबी 3.0 विनिर्देश का हिस्सा है 5 ऐतिहासिक कारणों से - जो जावा ईई 6, जेपीए 2.0 और ईजेबी 3.1 में अब सत्य नहीं है) अलग-अलग विनिर्देश हैं। मुझे यह भी उल्लेख करना चाहिए कि @Transactional के साथ एनोटेटेड स्प्रिंग बीन सत्र बीन के बराबर नहीं है। एक जावा ईई कंटेनर सत्र बीन्स के साथ और अधिक चीजें कर सकता है (नीचे देखें)। आपको उनकी आवश्यकता नहीं हो सकती है लेकिन फिर भी, वे सख्ती से बराबर नहीं हैं।

अंतिम बात, जावा ईई कंटेनर मानक लागू करते हैं, वसंत कंटेनर नहीं है, यह स्वामित्व है।

यह क्या है कि जावा ईई अनुपालन ऐप सर्वर आपको देता है कि आप आसानी से आसानी से आसानी से आसानी से आसानी से आसानी से आसानी से आसानी से आसानी से/आसानी से प्राप्त नहीं कर सकते हैं?

जैसा कि मैंने कहा, मुझे लगता है कि "गोंद" अतिरिक्त मूल्य का हिस्सा है और अत्यधिक की मजबूती में अत्यधिक योगदान देता है। फिर, ewernli के answer बहुत अच्छी तरह से रेखांकित किया गया है जो हासिल करना मुश्किल है।मैं सिर्फ जोड़ेंगे:

  • क्लस्टरिंग और फेल-ओवर (गलती सहिष्णुता प्राप्त करने के लिए)
  • प्रशासन सुविधाओं

हाँ, एक अच्छा जावा ईई सर्वर से बहुत साफ काम करेंगे गलती सहनशीलता में सुधार (कनेक्शन पूल, जेएनडीआई पेड़, जेएमएस गंतव्यों का क्लस्टरिंग, बेवकूफ बीन्स, स्मार्ट ईजेबी क्लाइंट, लेनदेन वसूली, सेवाओं के प्रवासन आदि के साथ स्वत: पुनः प्रयास)। "मिशन महत्वपूर्ण" अनुप्रयोगों के लिए - विशाल बहुमत नहीं हैं - यह महत्वपूर्ण है। और ऐसे मामलों में, सर्वलेट एपीआई के शीर्ष पर पुस्तकालय आईएमओ प्रतिस्थापन नहीं हैं।

1

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

तो ईजेबी एक मानक है जो एक विशिष्ट विनिर्देश का पालन करता है और इसलिए पोर्टेबल है।

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

संपादित करें: आपकी टिप्पणी के जवाब में आपके पास ईजेबी उचित रूप से एनोटेटेड और/या एक्सएमएल के माध्यम से कॉन्फ़िगर नहीं किया गया है, इस तरह से कोड जो इसे ईजेबी अनुपालन तरीकों से एक्सेस करता है, बिना परिवर्तन किए इसका उपयोग कर पाएगा।

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

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

+0

मैं जिस वास्तुकला का वर्णन करता हूं वह वास्तविक ईजेबी अनुप्रयोग सर्वर के लिए पोर्टेबल क्यों नहीं होगा? क्या यह नहीं चलेगा? क्या इसे फिर से कॉन्फ़िगर किया जाना चाहिए या फिर लिखा जाना चाहिए? – HDave

5

ईजेबी जावाईई घटक हैं जो javax.ejb एपीआई के अनुरूप हैं।

जावाईई एपीआई का संग्रह है, आपको उन सभी का उपयोग करने की आवश्यकता नहीं है।

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

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

+0

तो अनिवार्य रूप से, मेरे एनोटेटेड पीओजेओ में ईजेबी (मेरी सभी कार्यक्षमताओं की देखभाल) की कार्यक्षमता बहुत अधिक है, लेकिन क्योंकि टोमकैट javax.ejb को लागू नहीं करता है (और मेरे सेम उन एपीआई का उपयोग नहीं करते हैं) वे आधिकारिक तौर पर नहीं हैं EJBs। क्या मैं यह मानने में सही हूं कि मेरा आर्किटेक्चर एक ऐप सर्वर के भीतर ठीक होगा? – HDave

+1

@ एचडीवी: जेपीए एनोटेशन की तुलना में ईजेबी के लिए और भी कुछ है। वे लेनदेन, सुरक्षा और जीवन चक्र जैसी चीजें शामिल करते हैं, जो * पूरक * और * विस्तार * जेपीए एनोटेशन। – skaffman

+0

निश्चित - एनोटेशन द्वारा मेरा मतलब जेपीए + लेनदेन + सुरक्षा था। मुझे लगता है कि ये सभी एक जेईई ऐप सर्वर में काम करेंगे। क्या यह सही है? – HDave

3

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

2) ईजेबी हैं: स्टेटलेस बीन्स, स्टेटफुल बीन्स और संदेश संचालित बीन्स। हालांकि वसंत का उपयोग करके इन कार्यक्षमताओं में से प्रत्येक आसानी से हासिल किया जा सकता है, बस बस इस शब्दावली का उपयोग नहीं करता है। वसंत में, आपके पास ईजेबी में पीओजेओ + "जादू" नहीं है, वसंत में यह पीओजेओ + आपकी स्वयं की कॉन्फ़िगरेशन (जो कभी-कभी जादू की तरह महसूस करती है)। मुख्य अंतर यह है कि वसंत अधिक करता है और एप्लिकेशन सर्वर कम करता है, यही कारण है कि एक स्प्रिंग ऐप टॉमकैट से खुश है जबकि ejb3 ऐप को 'असली' एप्लिकेशन सर्वर की आवश्यकता होती है।

मेरी राय में, 90% अनुप्रयोग वसंत + टोमकैट का उपयोग करके तैनात किए जा सकते हैं, ejb3 शायद ही कभी आवश्यक है।

1

तो क्या मेरे पास प्रभावी रूप से जावा ईई एप्लिकेशन सर्वर नहीं है? और फिर मेरे बीन्स ईजेबी नहीं हैं? या क्या कुछ अन्य विशेषता परिभाषित कर रहा है?

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

यह क्या है कि एक जावा ईई अनुरूप एप्लिकेशन सर्वर आप देता है कि आप कर सकते हैं नहीं आसानी/आसानी से कुछ 3 पार्टी उप साथ बिलाव से मिल सकता है?

आपके दूसरे प्रश्न का त्वरित उत्तर। आपके मामले में सबसे अधिक संभावना नहीं है।

ईजेबी वास्तव में भारी वस्तुएं होती हैं और लोग अनिवार्य रूप से ओवरकिल होने पर समस्याओं को हल करने के लिए उनका उपयोग कर समाप्त हो जाते हैं। ईजेबी का उपयोग किए बिना उन समस्याओं को हल करने के लिए स्प्रिंग जैसे फ्रेमवर्क बनाए गए थे। मुझे लगता है कि स्प्रिंग पेश की जाने वाली पहली पुस्तक को "जेजेईई विकास के बिना जेजेईई विकास" भी कहा जाता था।

+1

सबसे पहले, टॉमकैट ** नहीं ** जावा ईई कंटेनर है। दूसरा, ईजेबी = भारी जे 2 ईई 1.4 के लिए सच था लेकिन ** ** ** ईजेबी 3 पर लागू नहीं होता है। हम अब 2004 में नहीं हैं ... –

+0

यह मुझे समझ में आता है कि यदि आपका कंटेनर ईजेबी का समर्थन नहीं करता है, तो यह जावा ईई कंटेनर नहीं है। विकिपीडिया के मुताबिक, टॉमकैट एक एप्लीकेशन सर्वर है (जो मुझे विश्वास है कि तकनीकी रूप से सच है, हालांकि भ्रमित है): http://en.wikipedia.org/wiki/Application_server – HDave

2

ईजेबी क्या है और नहीं है की सख्त परिभाषा के बाहर, आप टोमकैट में बहुत सारी चीज़ें जोड़ रहे हैं। यहां तक ​​कि यदि आपके पास एक ईजेबी सर्वर है, तो यह वास्तव में टॉमकैट वास्तव में सादा नहीं है।

अक्सर पूछे जाने वाले प्रश्न सही हैं: टॉमकैट एक ईजेबी सर्वर नहीं है। हालांकि, यदि आप पर्याप्त अतिरिक्त पुस्तकालयों और कोड पर ढेर करते हैं तो यह या कई अन्य चीजें हो सकती हैं।

+0

एक दुर्लभ और प्रबुद्ध उत्तर। अधिक लोगों को यह परिप्रेक्ष्य होना चाहिए। एक बार जब आपने प्रभावी ढंग से अपना स्वयं का जावाईई-जैसे स्टैक बनाया है तो आप वास्तव में "टॉमकैट" नहीं कह सकते हैं। –

3

दरअसल, अगर आप पर्याप्त प्रयास आप लगभग एक पूर्ण हैवीवेट आवेदन सर्वर :) तुम भी एक पोर्टेबल EJB3 कंटेनर एम्बेड कर सकता है में बिलाव/स्प्रिंग बदल सकते हैं ...

क्या यह एक है कि है डाल जावा ईई अनुपालन ऐप सर्वर आपको देता है कि आप कुछ तृतीय पक्ष उपप्रणाली के साथ आसानी से/आसानी से टॉमकैट से प्राप्त नहीं कर सकते हैं?

  • स्टेटफुल सत्र सेम (SFSB)
  • विस्तारित हठ संदर्भ
  • आवेदन ग्राहक कंटेनर/जावा वेब शुरू:

वहाँ अब भी कुछ विशेषताएं है कि 3 पार्टी मॉड्यूल के साथ पाने के लिए कड़ी मेहनत कर रहे हैं ऐप के आधार पर

  • क्लस्टरिंग। सर्वर
  • CORBA अंतर
  • JCA एकीकरण ~
  • दूरस्थ ~
  • कंटेनर से प्रबंधित लेनदेन ~
  • वितरित लेन-देन सभ्य प्रबंधन (जैसे की वसूली अनुमानी TX) के साथ
  • प्रविष्टियां ~ भी कर रहे हैं स्प्रिंग द्वारा समर्थित, लेकिन कम से कम मेरे सबसे अच्छे ज्ञान के लिए, इतनी छोटी नहीं। इस जवाब में

    कुछ और विवरण: EJB vs Spring

    +0

    +1 अच्छा जवाब। लेकिन मैं फेलओवर और रिकवरी भी जोड़ूंगा, आपको स्टेरॉयड पर टॉमकैट के साथ यह नहीं मिलेगा और यह एक पूर्ण मिडलवेयर विनिर्देश और कार्यान्वयन का एक महत्वपूर्ण हिस्सा है। –

    +0

    यह सही है। मैंने क्लस्टरिंग का हिस्सा माना, भले ही यह बिल्कुल वही नहीं है। इसके अलावा, जेईई चश्मा लिखे गए हैं ताकि क्लस्टरिंग का समर्थन किया जा सके, लेकिन वे इसे अनुपालन करने के लिए जरूरी नहीं हैं। लेकिन मैं पूरी तरह से सहमत हूं कि यह ऐप की पसंद में एक महत्वपूर्ण पहलू है। सर्वर। – ewernli