在tomcat 5中配置DBCP(Database Connection Pool)

来源:互联网 发布:凯立德v7.0端口修改器 编辑:程序博客网 时间:2024/05/21 17:47
在tomcat 5中配置DBCP(Database Connection Pool)

    偶也是JSP的一个初学者,前几天一直被DBCP在tomact 5中的配置问题搞得头都大了两号(注:如变身后的“白精精”)。经过看贴子、看文档,终于基本明白了一些,现将自己的一个例子与众多像偶一样的小菜鸟们分享,希望能让大家少在这配置方面“浪费”太多的时间,也希望我们这些小菜鸟能早是飞上“蓝天”。

首先,在Oracle中建立一个名为BOOK的Table,SQL如下:
create table BOOK(BOOK_CODE CHAR(5) NOT NULL,
    COST NUMBER(7,2));

插入几条记录:
insert into BOOK VALUES(B0020,13.50); 
insert into BOOK VALUES(B0220,12.00);
……

数库准备完毕!

偶的tomcat安装路径为D:/tomcat5,在D:/下的webapps目录下建立自己的web application目录。偶建的目录名为:myapps。然后在自己的目录中建立WEB-INF目录,建议从D:/tomcat5/webapps/jsp-examples/下将WEB-INF目录Copy过来,其中已经配置好了相关设置,特别是加入了jsp2.0这个新东东。现在的目录结构应该为:
D:/tomcat5
         |------ /webapps
             |------- /myapps
                     |------/WEB-INF

现在开始为DBCP做准备工作。将你想配置的database 的JDBC放到D:/tomcat5/common/lib下,注意一定要放”.jar”的文件,如是“.zip”的文件直接改为.jar即可。本例是用一个Oracle的jdbc,偶将classes111.zip更名为classes111.jar放到这里。

下面开始配置xml文件:
1.        对server.xml的配置:
用(你习惯的)文本编辑器打开D:/tomcat5/conf/server.xml,找到<Context path="" docBase="ROOT" debug="0">将它改为以下形式,并加入Oracle的设置信息。
 
<Context path="/myapps" docBase="myapps" debug="5" reloadable="true" crossContext="true">
    
<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_DBTest_log." suffix=".txt"  timestamp="true"/>
    
<!-- Oracle -->
    
<Resource name="jdbc/myoracle" auth="Container"  type="javax.sql.DataSource"/>
    
<ResourceParams name="jdbc/myoracle">
    
<!-- myoracle是自己起的名子,对应到web.xml中也要用这个名子,以及JSP页面中。 -->
    
<parameter>
        
<name>factory</name>
        
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    
</parameter>
    
<parameter>
        
<name>driverClassName</name>
        
<value>oracle.jdbc.driver.OracleDriver</value>
    
</parameter>
    
<parameter>
        
<name>url</name>
        
<value>jdbc:oracle:thin:@127.0.0.1:1521:accp</value><!-- accp为你的数据库名称 -->
    
</parameter>
    
<parameter>
         
<name>username</name>
         
<value>scott</value>
    
</parameter>
    
<parameter>
          
<name>password</name>
          
<value>tiger</value>
    
</parameter>
    
<parameter>
        
<name>maxActive</name>
        
<value>20</value>
    
</parameter>
    
<parameter>
        
<name>maxIdle</name>
        
<value>10</value>
    
</parameter>
    
<parameter>
         
<name>maxWait</name>
         
<value>10000</value>
     
</parameter>
 
</ResourceParams>
<!-- Oracle end -->
</Context>
<!-- my DBCP is end -->


2.然后再打D:/tomcat5/webapps/myapps/WEB-INF/下的web.xml,加入以下东东:(注意要在</web-app>之前加)
        
<resource-ref>
    
<description>Oracle Datasource example</description>
    
<res-ref-name>jdbc/myoracle</res-ref-name>
    
<res-type>javax.sql.DataSource</res-type>
    
<res-auth>Container</res-auth>
</resource-ref>

    OK!配置工作已经完成了。下面就是写一个JSP代码进入测试了。
在D:/tomcat5/webapps/myapps/下编写一个test.jsp,内容如下:
<%@ page import="javax.naming.Context"%>
<%@ page import="javax.sql.DataSource"%>
<%@ page import="javax.naming.InitialContext"%>
<%@ page import="java.sql.*"%>
<%
    DataSource ds 
= null;
    
try
    
{
        Context initCtx 
= new InitialContext();
        Context envCtx 
= (Context) initCtx.lookup("java:comp/env");
        ds 
= (DataSource)envCtx.lookup("jdbc/myoracle");
        
if ( ds !=null)
        
{
            
out.println("Connection is OK!");
            Connection cn
=ds.getConnection();
            
if(cn!=null)
            
{
                
out.println("cn is Ok!");
                Statement stmt 
= cn.createStatement();
                ResultSet rst 
= stmt.executeQuery("select * from BOOK");
                
out.println("<p>rst is Ok!" + rst.next());
                
while(rst.next())
                
{
                    
out.println("<P>BOOK_CODE:" + rst.getString(1));
                }

                cn.close();
            }

            
else
            
{
                 
out.println("rst Fail!");
            }

        }

        
else
            
out.println("Fail!");
    }

    
catch(Exception ne)
    
{
         
out.println(ne);
    }

%> 
原创粉丝点击