tomcat5.5的DBCP连接池配置

来源:互联网 发布:淘宝优惠卷代理怎么做 编辑:程序博客网 时间:2024/04/30 01:55
 
第一步:
一定确保 连接池,数据库驱动 等一些jar包,在tomcat/common/lib下存在
提示: 建议使用apache-tomcat-5.5.26版本,
 
因为在tomcat5.5.26中的common/lib/naming-factory-dbcp.jar文件中已经包含了DBCP 连接池了。
 
注意1:
一定要注意DBCP的包名,你可以用winRar or Zip 打开naming-factory-dbcp.jar
来查看具体的DBCP的包路径。
以tomcat5.5.26为例:DBCP的类路径是:
org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory
如果你的DBCP类路径输入错误,将引发:
javax.naming.NamingException: Could not load resource factory class [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactor]
异常!!!
 
注意2:
       将mysql的连接驱动拷贝到common/lib/下
 
第二步:
       开始具体配置了!!!~ 本Web App项目的名称为  Demo
 
首先在 Tomcat 5.5/conf/Catalina/localhost/下建立一个与你的项目同名的xml文件。
以本测试为例: 就是 Demo.xml
 
在这个Demo.xml文件中输入如下内容:
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/Demo" docBase="Demo" crossContext="true" debug="5" reloadable="true">
       <Resource
              name="jdbc/web"
              auth="Container"
              type="javax.sql.DataSource"
              factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
              maxActive="100"
              maxIdle="30"
              maxwait="5000"
              username="数据库de用户名"
              password="数据库de密码"
              driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/数据库名"
       />
</Context>
 
注意:
path:Web应用程序的上下文路径。(就是你的项目 名前加上以个 “/”)
docBase:表示的项目的具体路径,如果你的项目是在F:/Demo,这里就应该是F:/Demo
但本测试项目的文件位置,是在tomcat/webapps/Demo中,所以属性为Demo
 
< Resource >元素为JNDI,在lookup是要查找的资源
name: 表示JNDI在lookup是输入的 资源名
 
开始测试: 在Demo项目中建立 index.jsp 并输入如下内容
 
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%!
       final String JNDINAME = "java:comp/env/jdbc/web" ;
%>
<%
       Connection conn = null ;
       try
       {
              // 初始化查找命名空间
              Context ctx = new InitialContext() ;
              out.println("InitialContext is OK !<BR>") ;
              DataSource ds = (DataSource)ctx.lookup(JNDINAME) ;
              // 找到DataSource
              out.println("DataSource is OK !<BR>") ;
              conn = ds.getConnection();
              out.println("Connection is OK !<BR>") ;
 
              if (conn==null)
              {
                     out.println("connect is not null !");
              }
              else
              {
                     out.println("Is Connected !!! <BR>") ;
                     out.println(conn.getCatalog()+" !");
              }
       }
       catch(Exception e)
       {
              out.println("<BR>");
              out.println(e) ;
              out.println("<BR>");
              System.out.println(e) ;
       }
       finally
       {
              if (null != conn)
              {
                     conn.close();
              }
       }
%>
 
 
测试完毕 !!!!
 
最后还有提示一点: 在配置完毕后,一定要用IE,打开这个xml文件,来检查是否有语法错误。
 
我就是因为在
<Resource
       ……..
/>
最后少了以个 结束标记 ” / ” , 最后导致
javax.naming.NameNotFoundException: Name jdbc is not bound in this Context

导致浪费了我一天的时间,来找错误!!!