Tomcat6.0的JNDI使用方法(连接池)

来源:互联网 发布:外国高中生的生活 知乎 编辑:程序博客网 时间:2024/05/29 04:43

    最近有项目用到JNDI,为了方便的更改数据库和环境,好吧,那我就来学习下,顺便分享下方法,网上的方法乱七八糟,看的我眼都晕了。以下我提供的方法绝对是我本人试过可用的,要不发上来被你看到了,估计会被你骂。囧……

先让大家看下我的项目图:

QQ截图20130310234141.jpg

一、我们先找到tomcat6.0conf目录下的context.xml更改里面的内容:

<?xml version='1.0' encoding='utf-8'?>  <Context>  <WatchedResource>WEB-INF/web.xml</WatchedResource>      <Resource name="jdbc/mysqldb"             auth="Container"         type="javax.sql.DataSource"         driverClassName="com.mysql.jdbc.Driver"         url="jdbc:mysql://localhost:3306/test"         username="root"         password="123456"         maxActive="4"         maxIdle="2"         maxWait="-1"  />  <ResourceLink global="mysqldb" name="mysqldb" type="javax.sql.DataSource"/>  </Context>  

其他的全删掉,只要替换成我上面这样的就可以。

参数解释:

name 为当前数据源JNDI的名字,可以随意设定;

auth 为验证方式;

type 资源类型;

driverClassName 为Oracle驱动引用;

maxActiv 为连接池最大激活的连接数,设为0表示无限制;

maxIdle 为连接池最大空闲的连接数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制;

maxWait 为连接最大的等待时间,单位毫秒,如果超过此时间将接到异常。设为-1表示无限制;

username 为oracle数据库的一个用户名;

password 为username的密码;

url 为连接oracle的连接地址;

 

二、新建个项目JNDIPro,名字就叫这个啦。

 

三、里面建个类ConnectionPool.java

package com.shyy.jndi;    import java.sql.Connection;    import javax.naming.Context;  import javax.naming.InitialContext;  import javax.sql.DataSource;    public class ConnectionPool {      private static Connection conn;            public static Connection getConn(){          try{              Context ctx = new InitialContext();              DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mysqldb");              conn = ds.getConnection();          }catch(Exception e){              e.printStackTrace();          }          return conn;      }  }  

四、网上有的人说要配置下项目的WebRoot/web-inf下的web.xml文件,如下,我自己没有配置也运行成功了(大家可以省略,如果不行再加上,我不敢保证所有的环境都和我的一样)

在<web-app></web-app>中间配置,

 <resource-ref>    <description>DB Connection test</description>    <res-ref-name>jdbc/mysqldb</res-ref-name>    <res-type>javax.sql.DataSource</res-type>    <res-auth>Container</res-auth>     </resource-ref>   

五、现在我们来写个JSP页面测试下,如下代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"      pageEncoding="UTF-8"%>  <%@ page import="com.shyy.jndi.ConnectionPool,java.sql.Connection,java.sql.*" %>  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  <html>  <head>  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  <title>测试JNDI连接</title>  </head>  <body>  <%  ConnectionPool conn = new ConnectionPool();  Connection connconns = conn.getConn();  if(null!=conns){      out.println("数据库连接状态:<b>OK</b><hr />");      PreparedStatement pst = conns.prepareStatement("SELECT * FROM USER_INFO");      ResultSet rs = pst.executeQuery();      while(rs.next()){          int id =rs.getInt("ID");          String name = rs.getString("NAME");          String sex = rs.getString("SEX");          String telPhone = rs.getString("TELPHONE");          out.println("<b>id:</b>"+id+"<br /><b>姓名:</b>"+name+"<br /><b>性别:</b>"+sex+"<br /><b>手机号:</b>"+telPhone+"<hr />");      }  }else{      out.println("数据库连接状态:NO");  }  %>  </body>  </html>  

六、启动tomcat,运行结果如下:
QQ截图20130310233352.jpg

OK,大功告成。不行的同学仔细对照上面的步骤看下,反正我是成功啦。

本文出自我的个人网站:http://www.shuyangyang.com.cn/jishuliangongfang/Javabiancheng/2013-03-10/64.html

转载请注明出处,务必保留此信息。

原创粉丝点击