tomcat5/tomcat4中配置数据库(oracle)连接池

(我的收藏都会有注释,如果原作者不喜欢,可以来信!)


首先,在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,加入以下东东: (可以不加)
<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>
( 注意要在</web-app>之前加, 而不是在<web-app之前加,不加也可。当我加到</web-app>前面时,start tomcat出错,即如下格式时出错:
<resource-ref>
<description>Oracle Datasource example</description>
<res-ref-name>jdbc/pdm</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
应将该段代码加到resource mail/session 下面 即如下格式:
<resource-ref>
<res-ref-name>mail/Session</res-ref-name>
<res-type>javax.mail.Session</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<!--oracle dbcp-->
<resource-ref>
<description>Oracle Datasource example</description>
<res-ref-name>jdbc/pdm</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);
}
%>

最后,进入测试。运行tomcat.bat,打开IE在地址栏中输入:http://localhost:8080/myapps/test.jsp

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值