WHY?为什么使用ENC?
需求:把一个EJB的Jar包部署到两台Server,而这两台Server共享一台JNDI名字空间,此时问题就出来了。因为JNDI名字空间要求JNDI名字必须唯一。
解决办法:使用ENC--环境命名上下文介绍查找,将可以避免这个冲突,EJB或者J2EE应用的移植性也提高了。
WHAT? 什么是ENC?
java:comp/env 是环境命名上下文(environment naming context(ENC),是在EJB规范1.1以后引入的。 ENC是一个引用,引用是用于定位企业应用程序的外部资源的逻辑名。引用是在应用程序部署描述符文件中定义的。在部署时,引用被绑定到目标可操作环境中资源的物理位置( JNDI 名)。使用ENC是把对其它资源的JNDI查找的硬编码解脱出来,通过配置这个引用可以在不修改代码的情况下,将引用指向不同的EJB(JNDI)。
ENC的标准JNDI CONTEXT是:java:/comp/env 。
HOW? 如何使用ENC?
在配置的JDNI如test/test1前加上java/comp/env,
// Obtain the application component's ENC
Context iniCtx = new InitialContext();
Context compEnv = (Context) iniCtx.lookup("java:comp/env/test/test1");