Trích dẫn https://web.archive.org/web/20140227201242/http://v1.dione.zcu.cz/java/docs/jndi-1.2/tutorial/beyond/misc/policy.html
Trong bối cảnh gốc của không gian tên là một ràng buộc với tên "comp", được liên kết với một cây con dành riêng cho các ràng buộc liên quan đến thành phần. Tên "comp" là viết tắt của thành phần. Không có ràng buộc khác ở bối cảnh gốc. Tuy nhiên, bối cảnh gốc được dành riêng cho việc mở rộng chính sách trong tương lai, cụ thể là đặt tên các tài nguyên được gắn không phải với chính thành phần mà cho các loại thực thể khác như người dùng hoặc phòng ban. Ví dụ: các chính sách trong tương lai có thể cho phép bạn đặt tên người dùng và tổ chức / phòng ban bằng cách sử dụng các tên như "java: user / alice" và "java: org / Engineering".
Trong ngữ cảnh "comp", có hai ràng buộc: "env" và "UserTransaction". Tên "env" được liên kết với một cây con được dành riêng cho các ràng buộc liên quan đến môi trường của thành phần, như được định nghĩa bởi bộ mô tả triển khai của nó. "Env" là viết tắt của môi trường. J2EE khuyến nghị (nhưng không yêu cầu) cấu trúc sau cho không gian tên "env".
Vì vậy, ràng buộc bạn đã làm từ mùa xuân hoặc, ví dụ, từ một mô tả bối cảnh tomcat đi theo mặc định theo java: comp / env /
Ví dụ: nếu cấu hình của bạn là:
<bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="foo"/>
</bean>
Sau đó, bạn có thể truy cập trực tiếp bằng cách sử dụng:
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/foo");
hoặc bạn có thể thực hiện một bước trung gian để bạn không phải chỉ định "java: comp / env" cho mỗi tài nguyên bạn truy xuất:
Context ctx = new InitialContext();
Context envCtx = (Context)ctx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("foo");
jdbc/loc
và do đójava:comp/env/jdbc/loc
là chính xác), trong khi câu trả lời của cherouvim ngụ ý rằng bạn đã sử dụng sai ví dụ đầu tiên (java:comp/env/jdbc/loc
và do đójdbc/loc
là chính xác). Bất kể, câu trả lời thực sự là: nó phụ thuộc vào bối cảnh hiện tại .