आप हमेशा अपने JNDI नाम से सीधे अपने एप्लिकेशन में संसाधनों का संदर्भ कंटेनर में कॉन्फ़िगर कर सकते हैं, लेकिन यदि आप ऐसा करते हैं, तो अनिवार्य रूप से आप कंटेनर-विशिष्ट नाम को अपने कोड में वायर कर रहे हैं। इसके कुछ नुकसान हैं, उदाहरण के लिए, यदि आप कभी किसी कारण से बाद में नाम बदलना चाहते हैं, तो आपको अपने सभी अनुप्रयोगों में सभी संदर्भों को अपडेट करना होगा, और फिर उन्हें फिर से बनाना और फिर से तैयार करना होगा।
<resource-ref>
अप्रत्यक्ष की एक और परत का परिचय देता है: आप उस नाम को निर्दिष्ट करते हैं जिसे आप web.xml में उपयोग करना चाहते हैं , और, कंटेनर के आधार पर, कंटेनर-विशिष्ट कॉन्फ़िगरेशन फ़ाइल में एक बंधन प्रदान करते हैं ।
तो यहाँ क्या होता है : मान लीजिए कि आप java:comp/env/jdbc/primaryDB
नाम देखना चाहते हैं । कंटेनर पाता है कि web.xml के लिए एक <resource-ref>
तत्व है jdbc/primaryDB
, इसलिए यह कंटेनर-विशिष्ट कॉन्फ़िगरेशन में दिखेगा, जिसमें निम्न के समान कुछ शामिल हैं:
<resource-ref>
<res-ref-name>jdbc/primaryDB</res-ref-name>
<jndi-name>jdbc/PrimaryDBInTheContainer</jndi-name>
</resource-ref>
अंत में, यह नाम के तहत पंजीकृत वस्तु लौटाता है jdbc/PrimaryDBInTheContainer
।
विचार में संसाधनों को निर्दिष्ट है कि है web.xml को अलग करने का लाभ दिया है डेवलपर से भूमिका deployer भूमिका। दूसरे शब्दों में, एक डेवलपर के रूप में, आपको यह जानने की ज़रूरत नहीं है कि आपके आवश्यक संसाधनों को वास्तव में उत्पादन में क्या कहा जाता है, और आवेदन को तैनात करने वाले व्यक्ति के रूप में, आपके पास वास्तविक संसाधनों के लिए नक्शे में नामों की एक अच्छी सूची होगी।