คุณสามารถอ้างถึงทรัพยากรในแอปพลิเคชันของคุณได้โดยตรงโดยใช้ชื่อ 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บทบาท กล่าวอีกนัยหนึ่งในฐานะนักพัฒนาคุณไม่จำเป็นต้องรู้ว่าทรัพยากรที่คุณต้องการจริง ๆ เรียกว่าอะไรในการใช้งานจริงและในขณะที่ผู้ชายกำลังปรับใช้แอปพลิเคชันคุณจะมีรายชื่อที่ดีเพื่อจับคู่กับทรัพยากรจริง