2010-01-21 11 views
8

मैं यह समझने की कोशिश कर रहा हूं कि मेरे जावा ईई एप्लिकेशन में मेरे कुछ एप्लिकेशन तर्क कहाँ जाना चाहिए। मैं जावा ईई में नया हूं और एक विरासत डेटाबेस से बहुत सारे संरचित डेटा लोड करने और अपने आवेदन द्वारा उपयोग के लिए एक स्वच्छ ऑब्जेक्ट मॉडल बनाने पर विचार कर रहा हूं। मेरी जांच से मुझे लगता है कि जावा ईई ऐप्स में 2 घटक, एंटरप्राइज़ बीन और वेब अनुप्रयोग घटक हैं। मेरे आवेदन का यह हिस्सा डेटा लोड करने, ऑब्जेक्ट मॉडल बनाने और इच्छुक पार्टियों को डेटा की वर्तमान स्थिति के आधार पर जेएमएस के माध्यम से संदेश भेजने के लिए ज़िम्मेदार होगा। डेटा को डेटाबेस के साथ सिंक्रनाइज़ेशन और दूरस्थ जावा अनुप्रयोगों से जेएमएस के माध्यम से प्राप्त संदेशों से अपडेट किया जाएगा।जावा ईई/ग्लासफ़िश एप्लिकेशन तर्क

क्या इस तरह की कार्यक्षमता के लिए एक ईजेबी सही जगह है? मैं अपने ऑब्जेक्ट मॉडल (मुख्य विधि जावा ऐप समतुल्य) के प्रारंभिकरण को कैसे शुरू कर सकता हूं? ऑब्जेक्ट मॉडल की समीक्षा करने और जेएमएस के माध्यम से संदेश भेजने के लिए एक समय की घटना बनाने के लिए सबसे अच्छा अभ्यास क्या है?

मैंने जावा ईई, ग्लासफ़िश, ईजेबी पर कई लेख पढ़े हैं ... लेकिन अभी भी मुझे नहीं लगता कि मेरे पास यह कार्यक्षमता है कि मुझे यह कार्यक्षमता कहां लिखनी चाहिए। ईजेबी के किसी भी उदाहरण को मैंने क्लाइंट अनुप्रयोगों से सेम पर प्रत्यक्ष विधि कॉल के आसपास किया है।

फिलहाल मुझे लगता है कि जावा एप्लिकेशन नौकरी कर सकता है लेकिन हम भविष्य में आरएमआई और वेब क्लाइंट का उपयोग करने की सोच रहे हैं।

उत्तर

7

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

क्या कोई ईजेबी इस कार्यक्षमता की तरह सही जगह है?

तर्क ईजेबी में जाता है। लेकिन विभिन्न प्रकार के ईजेबी हैं।

मैं मेरी ऑब्जेक्ट मॉडल की initialisation (मुख्य विधि जावा अनुप्रयोग समकक्ष) कैसे शुरू करूं?

main विधि जैसी कोई चीज़ नहीं है। लेकिन अभी भी आवेदन परिनियोजन और/या अनावश्यकता से संबंधित कुछ प्रसंस्करण करने के कुछ तरीके हैं। आप ServletContextListener, Glassfish lifecycle module (non-standard) या शायद नए पेश किए गए Singleton बीन्स और @Startup एनोटेशन देख सकते हैं।

ऑब्जेक्ट मॉडल की समीक्षा करने और JMS के माध्यम से संदेश भेजने के लिए एक समय घटना बनाने के लिए सर्वोत्तम तरीका क्या है?

आप EJB Timer बना सकते हैं जिसे आवधिक रूप से कहा जाएगा। यदि आपको स्मृति में एक बार लोड होने की आवश्यकता है, तो मैं सुझाव दूंगा कि आप Singleton बीन्स भी देखें। ईजेबी 3.0 के साथ, समस्या यह थी कि start the timer automatically कैसे करें, लेकिन मुझे लगता है कि उन्होंने ईजेबी 3.1 में सुधार किया है और टाइमर started automatically by the application server हो सकते हैं जब आवेदन @Scheduled एनोटेशन का उपयोग करके तैनात किया जाता है। तो यह किसी भी तरह से आपको वांछित प्रारंभिक बिंदु प्रदान कर सकता है जैसा आपने अपने पिछले प्रश्न में पूछा था।

आप किसी भी बीन से जेएमएस संदेश भेज सकते हैं। जेएमएस एक डेटाबेस जैसे डेटाबेस की तरह। जेएमएस संदेश विशेष प्रकार के ईजेबी का उपयोग करके प्राप्त किया जाता है जिसे संदेश-संचालित बीन (एमडीबी) कहा जाता है।

आप एप्लिकेशन पारंपरिक वेब-ईजेबी-डेटाबेस क्लाइंट-सर्वर एप्लिकेशन नहीं होंगे, लेकिन यह जावा ईई के साथ व्यवहार्य होना चाहिए जो निश्चित रूप से एक बहुत लचीला मॉडल है।

2

जैसा कि आपने कहा था, उदाहरणों में प्रत्यक्ष आमंत्रण शामिल है। मेरे अनुभव में, यह सिर्फ उदाहरण नहीं है। आपके द्वारा वर्णित जावा ईई * 1 ऐप्स में से कोई भी आपके द्वारा वर्णित एक लंबे जीवित ऑब्जेक्ट ग्राफ़ का उपयोग नहीं करता है, इसके बजाय, वे आमतौर पर वेब अनुरोध, वेब सेवा कॉल या जेएमएस संदेश के जवाब में एक रिकॉर्ड (+ बच्चे/संबंधित) पर काम करते हैं। ।

आपकी आवश्यकताएं उस मोल्ड को तोड़ती हैं और जावा ईई सबसे अच्छा फिट नहीं हो सकता है। चेहरे की कीमत पर, आपके द्वारा वर्णित कोड का प्रकार ईजेबी कंटेनर में है, लेकिन उस कंटेनर में आपके ऑब्जेक्ट ग्राफ़ को एंकर करने के लिए एक अच्छा दीर्घकालिक संदर्भ नहीं है। वेब कंटेनर का ऐसा संदर्भ है, लेकिन टाइमर और संदेश हैंडलिंग और इस तरह की सुविधाओं की कमी है। जे 2 ईई छोड़ने और इसके बजाय सादे जावा एप्लिकेशन का उपयोग करने की लागत प्रशासन, तैनाती और निगरानी के लिए आवेदन सर्वर की सुविधाओं को खोने के लिए है।

Spring Framework बड़ा बनाने के लिए एक अच्छी पसंद हो सकती है। मुझे नहीं पता कि क्या आप जे 2 ईई के इतिहास से परिचित हैं, लेकिन स्प्रिंग फ्रेमवर्क और हाइबरनेट की अचानक, बड़ी लोकप्रियता अनिवार्य रूप से ईजेबी कंटेनर के खिलाफ एक समुदाय विद्रोह था, संस्करण 1.x/2.x। स्प्रिंग वेब ऐप्लिकेशंस कॉन्टेक्स्ट ने आपको वेब एप्लिकेशन के लिए एक मजबूत, लेनदेन संबंधी बैक-एंड दिया था, एमडीबी और जेटीए का लाभ उठाते हुए अन्यथा ईजेबी कंटेनर जितना संभव हो उतना अनदेखा कर रहा था * 2 (और प्रक्रिया में यूनिट-परीक्षण को सरल बनाना)। आप इस दृष्टिकोण को ले सकते हैं और एक ही WAR फ़ाइल के रूप में अपना आवेदन बना सकते हैं और स्प्रिंग के साथ अपनी बैक-एंड सेवाओं को बूट कर सकते हैं।

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

आपने पैमाने का उल्लेख नहीं किया है। यदि ऑब्जेक्ट ग्राफ़ विशाल है, तो GigaSpaces या Coherence जैसी तकनीकों को देखें।

** 1) सूर्य EJB3 *

** 2) इकाई EJBs 2.x सबसे बुरी बात यह थे की शुरूआत के साथ परिवर्णी शब्द से बाहर '2' में ले लिया। ईजेबी 3 को बड़े पैमाने पर "यदि आप उन्हें हरा नहीं सकते हैं, तो उनसे जुड़ें" हाइबरनेट को मानकीकृत करने के प्रयास। *

+0

> '" यदि आप उन्हें हरा नहीं सकते हैं, तो उनसे जुड़ें "हाइबरनेट को मानकीकृत करने के प्रयास" - असल में एक मॉडल जैसे कि हाइबरनेट के मूल रूप से ईजेबी 1 के लिए माना जाता था। दुर्भाग्य से उस समय के कुछ इंजीनियर जो इसके पक्ष में थे अंततः ईजेबी में आने वाले एंटिटी बीन्स पर जोर देने वाले एंटिटी बीन्स पर जोर दिया। विडंबना यह है कि पहली ईजेबी 1 एंटिटी बीन्स टॉपलिंक द्वारा हुड के तहत लागू की गई थीं, इस परियोजना में हाइबरनेट सस्ते ओपन सोर्स संस्करण था (हाइबरनेट इसके लिए प्रसिद्ध हो गया था , लेकिन मॉडल का आविष्कार नहीं किया था, टॉपलिंक बहुत पहले था) –

+0

हाँ, मुझे पता है, मुझे ओरेकल के प्री-वेबलॉगिक एप्लिकेशन सर्वर, ओरियन के साथ काम करने में नापसंद है। एक्सएमएल फाइलों में टॉपलिंक और स्वचालित पासवर्ड obfuscation केवल अच्छे भागों थे। वास्तव में TopLink SmallTalk दुनिया में उत्पन्न होता है। मैंने कभी खुद को स्मॉलटाक का उपयोग नहीं किया है, लेकिन मैंने स्मॉलटाक स्नातकों के समूह द्वारा लिखे गए जावा 1.1.8 एप्लिकेशन पर रखरखाव किया है। आज तक यह सबसे अच्छा ऑब्जेक्ट ओरिएंटेड जावा कोड है जिसे मैंने कभी देखा है।SmallTalk उत्कृष्टता पैदा की। – Barend

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