博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

加和不加java:comp/env/前缀有什么区别?

Posted on 2006-10-24 01:20  daniel-shen  阅读(2242)  评论(0编辑  收藏  举报
java:comp/env是标准的J2EE环境查找规则
使用这种方式必须做一次环境名到JNDI名的映射
这种隔离使得在写程序时不必关注真正的JNDI名字
其实说白了跟把JNDI名放到配置文件里是一样的
用法如下,如把java:comp/env/my/datasource映射到
my.ora.dataource

web.xml
<resource-ref>
<res-ref-name>my/datasource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>CONTAINER<res-auth>
</resource-ref>

weblogic.xml
<reference-descriptor>
--<resource-description>
----<res-ref-name>my/datasource</res-ref-name>
----<jndi-name>my.ora.dataource</jndi-name>

而在streamGallay中,ConfDbConnect中也用到了
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
ds = (DataSource) envContext.lookup(ConfSysInfo.dataBase);
对应的tomcat下应用的web.xml中如下:
<resource-ref>
  <description>DB Connection</description>
  <res-ref-name>jdbc/postgresql</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
 </resource-ref>