2012-07-24 87 views
57

java:comp/env是什麼意思?什麼是java:comp/env?

什麼是看起來像:

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

嗎?

據我所知,查找,如:

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

查找該名MyDatasourcecontext.xmlweb.xml得到數據庫的URL。 是這樣嗎? !但前者擡頭是幹什麼的?

+1

的可能重複[什麼是Java的:comp/env的/做(http://stackoverflow.com/questions/4099095/what-does-javacomp-env-do) – 2012-07-24 13:26:05

+4

@Marko Topolnik但這並不能回答我的問題。 – saplingPro 2012-07-24 13:33:39

+3

**請在投票結束之前打開並閱讀鏈接以關閉此問題。不要只追求標題。** – saplingPro 2012-07-24 13:51:58

回答

46

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

相對路徑,而不是絕對路徑。這就是它的用途。

+0

_this_節點的用途是什麼? JNDI樹中會有很多節點。 – saplingPro 2012-07-24 13:53:20

+2

我仍然不明白'java:comp/env'究竟是什麼。 – saplingPro 2012-07-24 13:54:30

+7

每個JEE組件(webapp,EJB)都可以定義該組件的本地屬性。這些屬性可以通過'java:comp/env'訪問。例如,請參閱http://tomcat.apache.org/tomcat-7.0-doc/jndi-resources-howto.html#web.xml_configuration。 EJB具有相同的東西。 – 2012-07-24 15:02:53

相關問題