Bạn luôn có thể tham chiếu trực tiếp đến các tài nguyên trong ứng dụng của mình bằng tên JNDI của chúng như được định cấu hình trong vùng chứa, nhưng nếu bạn làm như vậy, về cơ bản bạn đang nối tên dành riêng cho vùng chứa vào mã của mình. Điều này có một số nhược điểm, ví dụ: nếu bạn muốn thay đổi tên sau này vì lý do nào đó, bạn sẽ cần cập nhật tất cả các tham chiếu trong tất cả các ứng dụng của mình, sau đó xây dựng lại và triển khai lại chúng.
<resource-ref>
giới thiệu một lớp hướng dẫn khác: bạn chỉ định tên bạn muốn sử dụng trong web.xml và, tùy thuộc vào vùng chứa, cung cấp liên kết trong tệp cấu hình dành riêng cho vùng chứa .
Vì vậy, đây là những gì sẽ xảy ra : giả sử bạn muốn tra cứu java:comp/env/jdbc/primaryDB
tên. Vùng chứa nhận thấy rằng web.xml có một <resource-ref>
phần tử cho jdbc/primaryDB
, vì vậy, nó sẽ xem xét cấu hình dành riêng cho vùng chứa, chứa một cái gì đó tương tự như sau:
<resource-ref>
<res-ref-name>jdbc/primaryDB</res-ref-name>
<jndi-name>jdbc/PrimaryDBInTheContainer</jndi-name>
</resource-ref>
Cuối cùng, nó trả về đối tượng được đăng ký dưới tên của jdbc/PrimaryDBInTheContainer
.
Ý tưởng là việc chỉ định tài nguyên trong web.xml có lợi thế là tách vai trò nhà phát triển khỏi vai trò người triển khai . Nói cách khác, với tư cách là một nhà phát triển, bạn không cần phải biết tài nguyên cần thiết của mình thực sự được gọi là gì trong quá trình sản xuất, và với tư cách là người triển khai ứng dụng, bạn sẽ có một danh sách tên đẹp để ánh xạ đến tài nguyên thực.