tomcat5.0 JNDI 配置

本文详细介绍如何在Tomcat5.0.25中配置数据库连接池及JNDI查找功能,并提供了完整的测试代码。通过逐步指导,帮助读者实现数据库连接池的正确配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我看了好多都配不通 今天终于配通了,又在一些高手的基础上总结了一次,有什么问题可以找我
MSN:cnyqiao@hotmail.com

Tomcat 5.0.25 中配置JNDI

2005-08-29

本文主要介绍Tomcat5.0.25 这个版本下数据库连接池的配置,及程序对连接池的JNDI查找,并提供相应测试代码。本人经历了痛苦的调试过程.现将综合一些高人贴子,以最简单的形式给大家说明,希望大家不要骂我呀^_^

一 准备工作
1 .该文的配置环境:Tomcat5.0.25 + jdk1.4.2+ MySql 4.1 + mysql-connector-java-3.0.16-ga-bin.jar + Win2000 server.
2 .将mysql-connector-java-3.0.16-ga-bin.jar文件COPY到D:\tomcat5\common\lib目录下.可以在这里下载
http://dev.mysql.com/downloads/connector/j/3.0.html(3.0.17)
3.建表
# Host: localhost
# Database: test
# Table: 'test'
#
CREATE TABLE `test` (
`userid` int(11) NOT NULL auto_increment,
`name` varchar(100) NOT NULL default '',
`birthday` datetime NOT NULL default '0000-00-00 00:00:00',
`email` varchar(100) NOT NULL default '',
PRIMARY KEY (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

二 配置工作
1 .在D:\tomcat5\conf\tomcat-users.xml中加入以下内容:
<role rolename="manager"/>
<role rolename="admin"/>
<user username="admin" password="admin" roles="admin,manager"/>
2 .启动Tomcat,打开IE在地址栏内输入http://localhost:8080/admin 输入用户名/密码:admin/admin,进入Tomcat的管理界面;点击右边的Data Sources 在右上角的下拉菜单中选择Create New Data Source 在下边的输入框中输入需要的配置信息。

JNDI Name:jdbc/XXX(XXX为自己所命的名字)

Data Source URL:jdbc:mysql://localhost:3306/test(连接的数据名)

JDBC Driver Class: org.gjt.mm.mysql.Driver

User Name:root连接数据库的用户名

Password: xx 数据库密码

Max. Active Connections: 100 最大连接数

Max. Idle Connections: 30 是最大的空闲连接数

Max. Wait for Connection: 5000 最大等待连接数

3 .修改 web.xml
打开webapps/ROOT/WEB-INF下web.xml,加入如下内容:
<resource-ref>
<description>MySql Datasource example</description>
<res-ref-name>jdbc/XXX</res-ref-name> //注意这里的<res-ref-name>一定要与JNDI NAME相同
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

4 . 我们这里用JSP页面进行测试,以下两段代码放在TOMCAT_HOME/webapps/ROOT/DBTest下边,同时还须修改 TOMCAT_HOME/conf/Catalina/localhost/下的ROOT.xml文件,在
<Resource auth="Container" description="MySql Datasource example" name="jdbc/xxx" type="javax.sql.DataSource"/>下边加入:
<ResourceLink global="jdbc/XXX" name="jdbc/XXX" type="javax.sql.DataSource"/>
来引用所配置的JNDI数据源。同时将<Resource auth="Container" description="MySql Datasource example" name="jdbc/xxx" type="javax.sql.DataSource"/>注释掉

三 测试代码:
1 .UserHanDleDB.jsp
<%@ page language="java"%>
<%@ page import="java.util.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="javax.naming.*" %>

<%
String jndi_name="java:comp/env/jdbc/TestDB";
String select_user_sql="select userid,name,birthday, email from test";
String colnames[][]={{"User ID","Name","Birth day","EMail"}, {"userid","name","birthday","email"}};
Vector userSet=new Vector();
Vector columnSet=new Vector();

for(int i=0;i<colnames[0].length;i++){
columnSet.add(colnames[0][i]);
}
userSet.add(columnSet);

Context ctx = new InitialContext();
if(ctx == null )
throw new Exception("No Context");

DataSource ds = (DataSource)ctx.lookup(jndi_name);

Connection conn = ds.getConnection();

try {
PreparedStatement psPreparedStatement=conn.prepareStatement(select_user_sql);
ResultSet resultSet = psPreparedStatement.executeQuery();
while(resultSet.next()){
columnSet=new Vector();
for(int i=0;i<colnames[1].length;i++){
columnSet.add(resultSet.getString(colnames[1][i]));
}
userSet.add(columnSet);
}
}catch(SQLException e) {
e.printStackTrace();
}finally {
conn.close();
}
%>
2 .ViewTable.jsp

<html>
<head>
<title>Test Database </title>
<body >
<%@ include file="UserHandleDB.jsp" %>
<table border="1" >
<%
for(int i=0;i<userSet.size();i++){
Vector colSet=(Vector)userSet.get(i);
out.print("<tr>");
for(int j=0;j<colSet.size();j++){
String col=(String)colSet.get(j);
out.print("<td>"+col+"</td>");
}
out.print("</tr>");
}
%>
</table>
</body>
</html>

3.我的测试结果
User ID Name Birth day EMail
1 xxxxxx 0000-00-00 00:00:00 xxxxxxxxxxxxxx
2 test 0000-00-00 00:00:00 xxx@aaa.bb
3 test1 0000-00-00 00:00:00 xxx@aaa.bb
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值