什么是java:comp/env?

2022-08-31 11:39:13

是什么意思?java:comp/env

查找是什么样的 :

Context envContext = (Context)initContext.lookup("java:comp/env");

做?

我理解像这样的查找:

(DataSource)envContext.lookup("jdbc/MyDatasource")

在 中查找名称 或 以获取数据库的 URL。是这样吗? !!但是前者查找是做什么的呢?MyDatasourcecontext.xmlweb.xml


答案 1

java:comp/env是 JNDI 树中的节点,您可以在其中查找当前 Java EE 组件(Web 应用程序或 EJB)的属性。

Context envContext = (Context)initContext.lookup("java:comp/env");

允许定义直接指向此节点的变量。它允许做

SomeBean s = (SomeBean) envContext.lookup("ejb/someBean");
DataSource ds = (DataSource) envContext.lookup("jdbc/dataSource");

而不是

SomeBean s = (SomeBean) initContext.lookup("java:comp/env/ejb/someBean");
DataSource ds = (DataSource) initContext.lookup("java:comp/env/jdbc/dataSource");

相对路径而不是绝对路径。这就是它的用途。


答案 2

它是一个内存中的全局哈希表,您可以在其中按名称存储全局变量。

“java:”url方案导致JNDI寻找一个类,该类通常由您的应用程序容器提供,例如,这是Tomcat的实现javadocjavaURLContextFactory

另请参阅 NameingManager.getURLContext


推荐