Mengutip https://web.archive.org/web/20140227201242/http://v1.dione.zcu.cz/java/docs/jndi-1.2/tutorial/beyond/misc/policy.html
Pada konteks root namespace adalah binding dengan nama "comp", yang terikat ke subpohon yang disediakan untuk binding terkait komponen. Nama "comp" adalah singkatan dari komponen. Tidak ada binding lain di konteks root. Namun, konteks akar dicadangkan untuk perluasan kebijakan di masa mendatang, khususnya untuk menamai sumber daya yang tidak terikat pada komponen itu sendiri, tetapi untuk jenis entitas lain seperti pengguna atau departemen. Misalnya, kebijakan di masa mendatang mungkin memungkinkan Anda memberi nama pengguna dan organisasi / departemen dengan menggunakan nama seperti "java: user / alice" dan "java: org / engineering".
Dalam konteks "comp", ada dua binding: "env" dan "UserTransaction". Nama "env" terikat ke subpohon yang dicadangkan untuk binding terkait lingkungan komponen, seperti yang ditentukan oleh deskriptor penerapannya. "env" adalah kependekan dari lingkungan. J2EE merekomendasikan (tetapi tidak memerlukan) struktur berikut untuk namespace "env".
Jadi, pengikatan yang Anda lakukan dari spring atau, misalnya, dari deskripsi konteks kucing jantan, buka secara default di java: comp / env /
Misalnya, jika konfigurasi Anda adalah:
<bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="foo"/>
</bean>
Kemudian Anda dapat mengaksesnya secara langsung menggunakan:
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/foo");
atau Anda dapat membuat langkah perantara sehingga Anda tidak perlu menentukan "java: comp / env" untuk setiap sumber daya yang Anda ambil:
Context ctx = new InitialContext();
Context envCtx = (Context)ctx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("foo");
jdbc/loc
dan karenanyajava:comp/env/jdbc/loc
benar), sedangkan jawaban cherouvim menyiratkan bahwa Anda salah menggunakan contoh pertama (java:comp/env/jdbc/loc
dan dengan demikianjdbc/loc
benar). Terlepas dari itu, jawaban sebenarnya adalah: itu tergantung pada konteks saat ini .