什么是java:comp / env?


81

什么意思java:comp/env

看起来像什么:

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

怎么办?

我了解查询如下:

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

MyDatasourcecontext.xml或中查找名称,web.xml以获取数据库的URL。是这样吗 ?!! 但是前者看起来是什么?



4
@Marko Topolnik,但这不能回答我的问题。
saplingPro 2012年

3
请先打开并阅读链接,然后再投票关闭此问题。不要只是追求标题。
saplingPro 2012年

1
它肯定看起来像对我的答案。这是由容器为您查找您的资源,提供一个根命名空间。
洛恩侯爵

对于尝试从Weblogic迁移到Tomcat的人们来说,这是一个很好的问题
ACV

Answers:


73

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

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


这个节点是什么意思?JNDI树中将有许多节点。
saplingPro 2012年

7
我仍然没有真正的感觉java:comp/env
saplingPro 2012年

9
每个JEE组件(webapp,EJB)都可以定义该组件本地的属性。这些属性可以通过访问java:comp/env。例如,请参见tomcat.apache.org/tomcat-7.0-doc/…。EJB具有相同的功能。
JB Nizet 2012年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.