什么是java:comp / env?
java:comp/env
是什么意思?
看起来像什么:
Context envContext = (Context)initContext.lookup("java:comp/env");
做?
我明白,一个查找像:
(DataSource)envContext.lookup("jdbc/MyDatasource")
在context.xml
或web.xml
查找名称MyDatasource
以获取数据库的URL。 是这样吗 ? ! 但是前者查找的是什么呢?
java:comp/env
是JNDI树中的节点,您可以在其中find当前Java EE组件(Web应用程序或EJB)的属性。
Context envContext = (Context)initContext.lookup("java:comp/env");
允许定义一个直接指向这个节点的variables。 它允许做
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");
相对path而不是绝对path。 这就是它的用途。
这是一个内存中的全局哈希表,您可以按名称存储全局variables。
“java:”urlscheme使JNDI寻找一个javaURLContextFactory
类,通常由你的应用程序容器提供,例如这里是Tomcat的实现javadoc
另请参阅NamingManager.getURLContext