何谓java:comp/env
?
什么是看起来像:
Context envContext = (Context)initContext.lookup("java:comp/env");
怎么办?
据我所知,查找,如:
(DataSource)envContext.lookup("jdbc/MyDatasource")
查找该名MyDatasource
在context.xml
或web.xml
得到数据库的URL。 是这样吗 ? ! 但什么是前者的样子了吗?
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");
相对路径不是绝对路径。 这就是它的使用。
这是一个在内存中的哈希表全球,您可以按名称保存全局变量。
通过“Java:” URL方案将导致JNDI查找一个javaURLContextFactory
类,它通常是由您的应用程序容器,如提供这里是Tomcat的实现的javadoc
又见NamingManager.getURLContext