对java:comp/env的研究

来源:互联网 发布:淘宝售后针对评价话术 编辑:程序博客网 时间:2024/06/04 23:35
这两天研究了一下 context.lookup("java:comp/env/XXX")和直接context.lookup("XXX")的区别

网上关于这两个的文章也很多但是都说得很难理解比如什么ENC环境啊什么的各种概念。

其实说得简单点:context.lookup("java:comp/env/XXX")只能用在J2EE环境即是如果你自己写一个main函数想通过context.lookup("java:comp/env/XXX")这样的方式来访问JNDI服务这是不可能的。
因为:java:comp/env/是一个J2EE环境的定义说白了就是代表当前J2EE应用的环境比如你自己项目的Web环境或者是EJB环境那是不是只要是个Web项目就能用context.lookup("java:comp/env/XXX")这种方式访问JNDI服务了呢?也不是!!!
使用这样的方式必须做一次 当前应用环境 到 资源名 的映射。
在web.xml文件中有这样的标签:
<resource-env-ref></resource-env-ref>
<resource-ref></resource-ref>
<ejb-local-ref></ejb-local-ref> 
<ejb-ref></ejb-ref>
这些标签就是用来建立当前应用环境到服务器资源的映射的。
有了这样的映射之后就能采用context.lookup("java:comp/env/XXX")的方式来访问JNDI资源了。



注意:context.lookup("XXX")在任何时候都是有效的只要XXX确实是一个存在的JNDI名。