在tomcat 5中配置DBCP(Database Connection Pool)
偶也是JSP的一个初学者,前几天一直被DBCP在tomact 5中的配置问题搞得头都大了两号(注:如变身后的“白精精”)。经过看贴子、看文档,终于基本明白了一些,现将自己的一个例子与众多像偶一样的小菜鸟们分享,希望能让大家少在这配置方面“浪费”太多的时间,也希望我们这些小菜鸟能早是飞上“蓝天”。
首先,在Oracle中建立一个名为BOOK的Table,SQL如下:
插入几条记录:
数库准备完毕!
偶的tomcat安装路径为D:/tomcat5,在D:/下的webapps目录下建立自己的web application目录。偶建的目录名为:myapps。然后在自己的目录中建立WEB-INF目录,建议从D:/tomcat5/webapps/jsp-examples/下将WEB-INF目录Copy过来,其中已经配置好了相关设置,特别是加入了jsp2.0这个新东东。现在的目录结构应该为:
现在开始为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的设置信息。
2.然后再打D:/tomcat5/webapps/myapps/WEB-INF/下的web.xml,加入以下东东:(注意要在</web-app>之前加)
OK!配置工作已经完成了。下面就是写一个JSP代码进入测试了。
在D:/tomcat5/webapps/myapps/下编写一个test.jsp,内容如下:
偶也是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 -->
< 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);
}
%>
<% @ 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);
}
%>