什么是Java:comp / env的?(what is java:comp/env?)

2019-06-26 11:48发布

何谓java:comp/env

什么是看起来像:

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

怎么办?

据我所知,查找,如:

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

查找该名MyDatasourcecontext.xmlweb.xml得到数据库的URL。 是这样吗 ? 但什么是前者的样子了吗?

Answer 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");

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



Answer 2:

这是一个在内存中的哈希表全球,您可以按名称保存全局变量。

通过“Java:” URL方案将导致JNDI查找一个javaURLContextFactory类,它通常是由您的应用程序容器,如提供这里是Tomcat的实现的javadoc

又见NamingManager.getURLContext



文章来源: what is java:comp/env?