2010-03-24 13 views
8

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

मुझे आश्चर्य है कि इसका क्या फायदा है? चूंकि आप इसे करने के साथ कनेक्शन पूल तक पहुंच सकते हैं।

उत्तर

10

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

जेएनडीआई के साथ, आप मूल रूप से कहते हैं "इस एप्लिकेशन को SessionFactory की आवश्यकता है; और इसका नाम एक्स होगा" और आप तब तक खुश हैं जब तक कि एप्लिकेशन सर्वर में SessionFactory कॉन्फ़िगर किया गया हो। बाह्यीकरण इस तरह की कई आकर्षक लाभ हैं:

  1. आप अलग अलग मशीनों पर बेतहाशा अलग विन्यास का उपयोग कर सकते (प्रोडक्शन और QA ओरेकल का उपयोग, डेवलपर्स का उपयोग HSQL, ...)।

  2. आपको अपनी बिल्ड प्रक्रिया को कॉन्फ़िगरेशन के बारे में जागरूक करने की आवश्यकता नहीं है (ant war_for_qa या मेवेन प्रोफाइल के साथ घूमना)।

  3. आप संस्करण नियंत्रण में कॉन्फ़िगरेशन की जांच करने के लिए लुभाने के लिए प्रेरित नहीं हैं, और इसलिए आपका लाइव डेटाबेस पासवर्ड हर अस्थायी, इंटर्न, परामर्शदाता या पूर्व कर्मचारी के लिए ज्ञात नहीं होगा जो कभी (या होगा!) तक पहुंच भंडार

  4. आपके इंस्टॉलेशन/कॉन्फ़िगरेशन निर्देशों में "डेटाबेस लॉगिन कॉन्फ़िगर करने, WAR फ़ाइल में फ़ाइल foo.properties को संपादित करने" जैसे आइटम शामिल नहीं होंगे, जो अनिवार्य रूप से उत्पादन सर्वर पर कॉन्फ़िगरेशन को सबसे खराब संभवतः ओवरराइट किया जाएगा पल क्योंकि सभी सप्ताहांत काम कर रहे एक सिसडमिन एक गैर-संपादित युद्ध को तैनात करने के लिए हुआ क्योंकि कॉफी रविवार की दोपहर में चली गई।

JNDI सिर्फ जावा में इस बाह्यीकरण करने का "मानक" जिस तरह से, कि नए devs/व्यवस्थापक अपनी खुद की, घर में brewn की विचित्रता जानने के लिए प्रशिक्षण के दो दिन की जरूरत नहीं होगी, जिसका मतलब है होता है कॉन्फ़िगरेशन सिस्टम जो वास्तव में काफी चालाक है लेकिन इसमें यह अजीब बग है कि कोई भी इसमें प्रवेश नहीं करना चाहता क्योंकि यह वास्तव में अजीब है और कोई भी जिसके पास यह एक बहुत ही सरल कामकाज है, c।

संबंधित:What is the purpose of JNDI?

+0

कि @gustafc मैं क्या सोचा था। मुझे यकीन नहीं था कि अगर मैं कुछ और याद कर रहा था। हम अपने कनेक्शन पूल के लिए जेएनडीआई का उपयोग कर रहे हैं, इसलिए मुझे लगता है कि मैं सोच रहा था कि सत्र फ़ैक्टरी को ऐप्स सर्वर पर ले जाने के लिए एक अतिरिक्त लाभ था। हमारे मामले में मुझे नहीं लगता कि वहां होगा, क्योंकि इसके लिए कॉन्फ़िगरेशन हमारे सभी सर्वरों में बिल्कुल समान है। वैसे, आपका जवाब शायद सबसे अच्छा जवाब है जहां तक ​​मैंने बहुत स्पष्ट और जानकारीपूर्ण होने तक देखा है। –

+0

क्या मैं सही हूं कि मुख्य उद्देश्य इसे उसी सर्वर पर तैनात कई अनुप्रयोगों में उपलब्ध कराने के लिए है? अगर ऐसा होता है तो एसएफ का साझा दूसरा स्तर कैश होता है। हमारा एसएफ '@ सिंगलटन' '@ स्टार्टअप' @ ईजेबी' के भीतर रहता है क्योंकि हमारे पास केवल एक ही एप्लीकेशन तैनात है। – djmj

+0

@djmj, व्यवहार्य लगता है लेकिन मैं ईमानदारी से यह नहीं जानता कि ऐप सर्वर इसे कैसे संभालते हैं, क्योंकि मैंने बाहरी रूप से परिभाषित हाइबरनेट/जेपीए सेटअप का उपयोग करके कभी भी ऐप में नहीं भाग लिया है - अधिकांश ऐप्स आपके द्वारा वर्णित तरीके से तैनात किए जाते हैं। मैं कल्पना कर सकता हूं कि यह स्थिरता, सुरक्षा इत्यादि पर प्रभाव डाल रहा है और इसलिए * साझा किए गए दूसरे स्तर के कैश का उपयोग नहीं करता है। – gustafc

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