Anda selalu dapat merujuk ke sumber daya dalam aplikasi Anda secara langsung dengan nama JNDI mereka seperti yang dikonfigurasi dalam penampung, tetapi jika Anda melakukannya, pada dasarnya Anda menghubungkan nama khusus penampung ke dalam kode Anda. Ini memiliki beberapa kelemahan, misalnya, jika Anda ingin mengubah nama nanti karena alasan tertentu, Anda harus memperbarui semua referensi di semua aplikasi Anda, lalu membangun kembali dan menerapkannya kembali.
<resource-ref>
memperkenalkan lapisan tipuan lain: Anda menentukan nama yang ingin Anda gunakan di web.xml , dan, bergantung pada penampungnya, berikan pengikatan dalam file konfigurasi khusus penampung .
Jadi, inilah yang terjadi : misalkan Anda ingin mencari java:comp/env/jdbc/primaryDB
nama. Penampung menemukan bahwa web.xml memiliki <resource-ref>
elemen untuk jdbc/primaryDB
, sehingga ia akan melihat ke dalam konfigurasi khusus penampung, yang berisi sesuatu yang mirip dengan berikut ini:
<resource-ref>
<res-ref-name>jdbc/primaryDB</res-ref-name>
<jndi-name>jdbc/PrimaryDBInTheContainer</jndi-name>
</resource-ref>
Akhirnya, ia mengembalikan objek yang didaftarkan dengan nama jdbc/PrimaryDBInTheContainer
.
Idenya adalah bahwa menentukan sumber daya di web.xml memiliki keuntungan dengan memisahkan peran pengembang dari peran penyebaran . Dengan kata lain, sebagai pengembang, Anda tidak harus tahu apa sebenarnya sumber daya yang diperlukan dalam produksi, dan sebagai orang yang menerapkan aplikasi, Anda akan memiliki daftar nama yang bagus untuk dipetakan ke sumber daya nyata.