का उद्देश्य क्या है यदि आप संभव हो तो उदाहरण के साथ जेएनडीआई के उपयोग को कैसे महसूस कर सकते हैं?जेएनडीआई
जेएनडीआई
उत्तर
जेएनडीआई जावा नामकरण और निर्देशिका इंटरफेस है। इसका उपयोग डेवलपर और नियोक्ता एप्लिकेशन की चिंताओं को अलग करने के लिए किया जाता है। जब आप एक डेटाबेस लिखते हैं जो डेटाबेस पर निर्भर करता है, तो आपको उस डेटाबेस से कनेक्ट करने के लिए उपयोगकर्ता नाम या पासवर्ड के बारे में चिंता करने की आवश्यकता नहीं है। जेएनडीआई डेवलपर को डेटाबेस में नाम देने की अनुमति देता है, और उस नाम को डेटाबेस के वास्तविक उदाहरण में मैप करने के लिए नियोक्ता पर भरोसा करता है।
उदाहरण के लिए, आप कोड है कि एक जावा ईई कंटेनर में चलाता लिख रहे हैं, तो आप इस बारे में JNDI नाम "डेटाबेस" के साथ डेटा स्रोत की पकड़ पाने के लिए कर सकते हैं:
DataSource dataSource = null;
try
{
Context context = new InitialContext();
dataSource = (DataSource) context.lookup("Database");
}
catch (NamingException e)
{
// Couldn't find the data source: give up
}
नोट वहाँ कुछ भी नहीं यहाँ है डेटाबेस ड्राइवर, या उपयोगकर्ता नाम, या पासवर्ड के बारे में। यह कंटेनर के अंदर कॉन्फ़िगर किया गया है।
जेएनडीआई डेटाबेस (जेडीबीसी) तक ही सीमित नहीं है; सभी प्रकार की सेवाओं को नाम दिया जा सकता है। अधिक जानकारी के लिए, आपको इस विषय पर Sun tutorial देखें।
तो तस्वीर में इस उदाहरण के साथ, जेएनडीआई एक कॉन्फ़िगरेशन xml फ़ाइल या एक प्रॉपर्टी फ़ाइल में डेटाबेस नाम रखने से अलग कैसे है और फिर वहां से पढ़ रहे हो? – Ajay
सबसे पहले, आपको अपनी कॉन्फ़िगरेशन फ़ाइल में सादा पाठ में पासवर्ड स्टोर करना होगा। दूसरा, यदि आपके पास एक ही डेटाबेस पर इंगित करने वाले कई ऐप्स हैं और डेटाबेस कॉन्फ़िगरेशन परिवर्तनों के बारे में कुछ है, तो आपको एकाधिक स्थानों में कॉन्फ़िगरेशन अपडेट करना होगा। –
अच्छी तरह से, जेएनडीआई यहां कैसे मदद करता है? – Ajay
जेएनडीआई EventContext
का उपयोग कर सेवाओं की खोज और सुनवाई दोनों के लिए कॉन्फ़िगरेशन जानकारी और दोनों के लिए एक बहुत ही शक्तिशाली तंत्र है। जेएनडीआई में आप किसी भी ऑब्जेक्ट (केवल DataSource
एस नहीं) देख सकते हैं और सुन सकते हैं, मानते हैं कि आपका जेएनडीआई सेवा प्रदाता इसका समर्थन करता है।
बेशक, एकमात्र मुद्दा वास्तव में एक जेएनडीआई सेवा प्रदाता है; इसके बारे में बड़ी बात यह है कि यह आपके लिए रोल करना आश्चर्यजनक रूप से आसान है। इसके बाद आप Java12eans XMLEncoder
और XMLDecoder
का उपयोग कर किसी भी जावा इंस्टेंसXML
में एन्कोड कर सकते हैं: आपको किसी एप्लिकेशन सर्वर के भीतर चलने पर भरोसा करने की आवश्यकता नहीं है!
तो कॉन्फ़िगरेशन फ़ाइलों के बीच क्या अंतर है? खैर, यह बहुत साफ हो सकता है क्योंकि आपके सभी एप्लिकेशन से उसी कॉन्फ़िगरेशन को से प्राप्त कर सकते हैं। यदि उन्हें कॉन्फ़िगरेशन जानकारी (जैसे डेटाबेस स्थान) साझा करने की आवश्यकता है तो इसे एक बार JNDI में परिभाषित किया जा सकता है। मान लीजिए कि आपने डेटाबेस सर्वर ले जाया है: आपको उस स्थान के साथ गैज़िलियन कॉन्फ़िगरेशन फ़ाइलों को याद रखने की आवश्यकता नहीं है। आप बस एक ही स्थान पर जाएं: जेएनडीआई।
जेएनडीआई एक संसाधन निर्माण के सरलीकरण को केवल नाम में बनाने की अनुमति देता है। इसलिए, यह सुविधा/सुरक्षा/आदि के लिए समूह 1 में कई विवरण हैं। (उर्फ अमूर्त परत)
साकार करने के लिए: एक गुण की सूची है कि JNDI प्रसंग इंटरफ़ेस में पूर्वनिर्धारित क्षेत्रों से मेल खाती है की स्थापना की।(इन गुणों JNDI निष्पादन के लिए सेटिंग्स निर्दिष्ट, लेकिन * नहीं खोज नाम)
Properties props = new Properties();
//field Context.INITIAL_CONTEXT_FACTORY => property name java.naming.factory.initial
//field Context.PROVIDER_URL => property name java.naming.provider.url
props.load(new FileInputStream("*properties file*")); //prop file in this case
Context ctx = new InitialContext(props);
Object o = ctx.lookup("*name of resource*");
आदर्श, एक विशेष समारोह के लिए अपने संगठन में एक LDAP निर्देशिका, डीएनएस, आदि, बनाए रखने के लिए मौजूद होगा (ताकि एक एकीकृत एकल मानचित्रण सेट सेवाओं सभी, को कम करने विसंगतियों)
JNDI सेवा प्रदाता की सूची: https://www.ibm.com/support/knowledgecenter/en/SSVSD8_8.4.1/com.ibm.websphere.dtx.adapjndi.doc/concepts/c_jndi_JNDI_Service_Providers_.htm
JNDI निर्देशिका और नामकरण सेवाओं (यानी साधन है जिसके द्वारा नाम वस्तुओं से जुड़े हैं) का उपयोग करने के लिए इस्तेमाल एक API है। किसी ऑब्जेक्ट के नाम के साथ संबंध को बाध्यकारी कहा जाता है।
नामकरण सेवा का एक मूल उदाहरण DNS है जो मशीन नामों को आईपी पते पर मैप करता है।
जेएनडीआई का उपयोग करके, एप्लिकेशन किसी भी प्रकार के नामित जावा ऑब्जेक्ट्स को स्टोर और पुनर्प्राप्त कर सकते हैं।
जावा के संदर्भ में इसका उपयोग कॉन्फ़िगरेशन फ़ाइलों में किया जा सकता है जहां आप पर्यावरण विशिष्ट चर हार्ड कोड नहीं करना चाहते हैं।
स्प्रिंग उदाहरण:
स्प्रिंग प्रसंग फ़ाइल
<bean id="WSClientConfig" class="com.example.BaseClientConfigImpl">
<property name="protocol">
<jee:jndi-lookup jndi-name="java:comp/env/protocol" />
</property>
<property name="endpoint">
<jee:jndi-lookup jndi-name="java:comp/env/endpoint" />
</property>
<property name="requestPath">
<jee:jndi-lookup jndi-name="java:comp/env/requestPath" />
</property>
बिलाव प्रसंग फ़ाइल
<Environment name="protocol" type="java.lang.String" value="https://"/>
<Environment name="endpoint" type="java.lang.String" value="172.0.0.1"/>
<Environment name="requestPath" type="java.lang.String" value="/path/to/service"/>
- 1. जेएनडीआई
- 2. जेएनडीआई
- 3. जेएनडीआई
- 4. जेबॉस 7: जेएनडीआई लुकअप
- 5. ओपनजेपीए और जेएनडीआई
- 6. जेएनडीआई लुकअप असफल (NameNotFoundException)
- 7. ग्लासफ़िश में जेएनडीआई कॉन्फ़िगरेशन/लुकअप
- 8. टोमकैट बनाम वेबलॉगिक जेएनडीआई लुकअप
- 9. जेएनडीआई नाम - क्या उपसर्ग "jdbc /" आवश्यक है?
- 10. जेएनडीआई लुकअप टाइम्स में विशाल भिन्नता
- 11. कंटेनर से बाहर जेएनडीआई डेटा स्रोत
- 12. तेजी से क्या है: जेडीबीसी या जेएनडीआई?
- 13. क्या ओएसजीआई जेएनडीआई गैर-ओएसजीआई कोड से जेएनडीआई कॉल के साथ सह-अस्तित्व की अनुमति देता है?
- 14. वेबलॉगिक पर जेएनडीआई को कस्टम ऑब्जेक्ट जोड़ना 10
- 15. डेटा स्रोतों के लिए जेएनडीआई का उपयोग क्यों करें
- 16. जेएनडीआई का उपयोग कर एलडीएपी उपयोगकर्ता पासवर्ड प्रमाणीकरण
- 17. एक जेएनडीआई संसाधन में हाइबरनेट सत्र फ़ैक्टरी क्यों बांधें?
- 18. हाइबरनेट के लिए जेएनडीआई कैसे और कहाँ जोड़ना है?
- 19. मैं एक वेब कंटेनर के बाहर से एक जेएनडीआई डेटासोर्स कैसे देखूं?
- 20. मैं जेएनडीआई तारों के बारे में कहां से जान सकता हूं?
- 21. जेएनडीआई क्या है और क्या मुझे वेबसाइट बिल्डिंग के लिए इसकी आवश्यकता है
- 22. वसंत में टोमकैट द्वारा प्रदान किए गए जेएनडीआई डेटासोर्स का उपयोग करने में असमर्थ?
- 23. टॉमकैट में जेएनडीआई के लिए जावा मेल एपीआई कॉन्फ़िगरेशन का दस्तावेज़ीकरण
- 24. जेएनडीआई (वसंत के साथ) का उपयोग करके हाइबरनेट की बोली को कॉन्फ़िगर करें
- 25. jndi.properties से इंजेक्शन के बाद जेएनडीआई में डेटासोर्स क्यों नहीं मिला है?
- 26. डेटा स्रोतों के लिए जेएनडीआई का उपयोग करने के लिए प्रमुख प्रेरणा क्या हैं?
- 27. जेएनडीआई क्या है? इसका मूल उपयोग क्या है ..? इसका उपयोग कब किया जाता है?
- 28. जेएनडीआई का उपयोग करने के लिए जेपीए को कैसे कॉन्फ़िगर करें?
- 29. हम टॉमकैट सर्वर का उपयोग कर जेएनडीआई को कैसे कॉन्फ़िगर कर सकते हैं?
- 30. कनेक्शन पूल या डेटा स्रोत? मुझे जेएनडीआई में क्या रखा जाना चाहिए?
आप उपयोग के मामलों के लिए एक व्यक्तिगत ब्लॉग पोस्ट की जांच कर सकते हैं: http : // tshikatshikaaa.blogspot.com/2013/01/what-is-jndi-spi-cci-ldap-and-jca.html – JVerstry
@ जेवीरस्ट्री +1 एक ऐसे लेख को इंगित करने के लिए जो संबंधित एलडीएपी, जेसीए और सीसीआई के बारे में बात करता है। – Ajay
[यह SO धागा] देखें (http://stackoverflow.com/a/21227726/2396539) –