JNDI(Java Naming and Directory Interface) java命名与目录接口。下面我们简单介绍下。
JNDI是java中的另外一个连接方法。下面我们简单的说下JNDI的连接方法,我们要用连接池技术的时候呢,就应要用到JNDI,连接池,什么是连接池呢,简单的说我们原来用JDBC的时候呢是用一个申请一个。而连接池就是申请多个JDBC连接放到这个池里面,用到的时候呢,就方便了。连接池技术的优势,一种新的资源分配方式,加快了访问速度,也是一种新的资源管理方式。
下面我们说说具体怎么配置JNDI,以及怎么实现。
首先我们需要配置的是Context.xml这个文件位于tomcat文件夹下的conf文件夹下,打开以后我们要往上面添加点东西。
<Resource name="jdbc/test" //配置的是名字
type="javax.sql.DataSource" //哪个包下的哪个类
driverClassName="com.mysql.jdbc.Driver" //驱动
url="jdbc:mysql://localhost:3306/test?" //url
username="root" //用户名
password="admin" //密码
maxActive="10" //连接池 最大的连接数 设置为0 没有限制
maxIdle="3" //最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制。
maxWait="1000"/> //最大建立连接等待时间单位为ms 设置为-1是没有限制
这里我们配置的是一个Resource也就是一个源,具体配置方法和含义上面已经标记出来,配置好后,我们进入到我们的应用文件夹。WEB-INF文件夹,打开里面的web.xml进行配置,其实这个中的配置是可有可无的。里面具体配置内容与解析如下:
<resource-ref>
<res-ref-name>jdbc/test</res-ref-name> //与context中的配置name相同
<res-type>javax.sql.DataSource</res-type> //与context中的配置name相同
<res-auth>Container</res-auth> //res-auth元素定义是由企业bean的代码作为资源管理器,还是由容器作为资源管理器.后一个选择, 发布者可以对容器提供支持,这个元素的值必须是Application和Container中的一个
</resource-ref>
这个就是其中的具体配置方法。现在我们已经配置好了。下面我们需要的是进行一下test,我们就用一个jsp页面来检测下好了。我们把java代码放到里面。
jsp页面中的实现代码
<%
try{
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/test");
Connection con =ds.getConnection();
String sql = "select * from test";
ResultSet rs = con.createStatement().executeQuery(sql);
while (rs.next()){
out.println(rs.getString(1));
out.println(rs.getString(2));
out.println(rs.getString(3));
}
con.close();
}catch(Exception e){
e.printStackTrace();
}
%>
这就是具体的实现方法。至此JNDI配置与实现过程完毕。我用的是tomcat6.0,有兴趣大家可以自己尝试下。