Java Naming and Directory Interface,Java命名和目录接口;
百度百科提到:
命名服务将名称和对象联系起来,使得我们可以用名称访问对象。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性。
命名服务:
给对象起个名称,并将名称和该对象绑定,然后可以通过名称找到相应的对象;
目录服务:
不只保存对象和对应名称的关联,对象还有各种属性,并且可以对属性进行增删改查;
JNDI会在内存中构件一个树形结构或叫层次结构,保存名称和对象、属性;(个人理解)
JNDI类似Jdbc,有两套接口,一套给厂商使用,另一套给开发者使用;
Tomcat自己提供了连接池,但需要以JNDI的方式访问;
Tomcat作为厂商提供了IntialContext的实现;
java:comp/env -->固定名称,JNDI的命名空间,访问入口;
Tomcat6.X配置自己的连接池,示例:
$Tomcat_home/conf/catalina/localhost/a.xml:
<Context>
<Resource
name="jdbc/news" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="orcl" password="name" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@localhost:1521:orcl" />
</Context>
jdbc/news:是数据库连接的jndi名称,可通过这个名称获得连接;
Tomcat5.5配置自己的连接池,除了上面的配置还需配置web.xml:
<web-app>
<resource-ref> <description>news DataSource</description> <res-ref-name>jdbc/news</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth></resource-ref>
</web-app>
(参考http://blog.youkuaiyun.com/qy1387/article/details/8053962)
配置结束后,需要在代码中通过jndi调用:
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/news");
Connection conn = ds.getConnection();
(以上全文,如有不正确,欢迎指正!)