数据库连接池终极解决方案
本指南将说明如何在自己安装的tomcat中配置好数据库连接池。
装好tomcat后,启动tomcat。在地址栏输入:http://localhost:8080/回车,应该可以看到tomcat的欢迎界面了。本指南不是针对tomcat,其他详情请自己找吧。现在在地址栏输入:http://localhost:8080/admin回车,应该可以看到他的登录界面了。如果你恰好有一个工程名叫做admin,那么,先把它删掉吧,最好连tomcat根目录中的work文件加一起删掉就应该可以了,实在不行就重新安装。
填上你刚才的帐号密码,登陆。别说你不是刚装的,早就忘了帐号密码了。最简单的方法,重新安装。如果你原来手工蹂躏过tomcat,那么一定舍不得重装,还有个办法,找到tomcat根目录/conf/tomcat-users.xml。打开,有一行看上去是这样的
<user username="funcreal" password="123456" roles="admin,manager"/>
,你应该知道怎么回事了吧,funcreal就是帐号,123456就是密码。
登陆进tomcat的后台,按顺序点开TomcatService->Service->Host->你希望配置连接池的工程->Resources->Data Sources。你应该在右侧看到了配置连接池的友好的界面。从下拉列表中选择:Create New Data Source。打开一个新的数据库连接池配置页。
JNDI NAME: jdbc/mssql
;在应用程序中要用到。
Data Source URL: 就是连接字符串
;
JDBC DRIVER CLASS:
就是驱动;
帐号密码是自己的数据库的帐号密码,其余的都默认就行了。最后一项可以不填。最后,
save->commit changes
。一切就是这么简单。
接着
修改tomcat根目录/conf/Catalina/localhost下的web名称.xml添加如下语句:
<ResourceLink name="
JNDI Name
" type="
javax.sql.DataSourcer
" global="
JNDI Name
"/>
Ok
,可以进行测试了!
本例(SQL2000 & mySQL)配置如下:
JNDI Name:
jdbc/mssqltest /
jdbc/mysqltest
Data Source URL: jdbc:microsoft:sqlserver://127.0.0.1;databaseName=stu_man
/ jdbc:mysql://127.0.0.1/stu_man
JDBC Driver Class: com.microsoft.jdbc.sqlserver.SQLServerDriver
/
com.mysql.jdbc.Driver
User Name: sa /root
Password: 123456 /123456
其他默认即可。
接着
,修改tomcat根目录/conf/Catalina/localhost即:
D:\Program Files\Java\Tomcat 5.0\conf\Catalina\localhost
下的
connpool.xml,
添加如下语句:
<ResourceLink name="jdbc/mssqltest" type="javax.sql.DataSourcer" global="jdbc/mssqltest"/>
<ResourceLink name="jdbc/mysqltest" type="javax.sql.DataSourcer" global="jdbc/mysqltest"/>
下面开始测试,测试文件内容如下:
<%@ page contentType="text/html; charset=GBK" errorPage="error.jsp"%>
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="javax.naming.*" %>
<html>
<head>
<title>hhh</title>
<%
Connection con=null;
Statement sm=null;
ResultSet rs=null;
try{
InitialContext ctx=new InitialContext();
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/mssqltest");
con=ds.getConnection();
sm=con.createStatement();
rs=sm.executeQuery("select * from student");
while(rs.next())
{
out.println(rs.getString("name"));
out.println("id:"+rs.getString("id"));
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(rs!=null){
try{
rs.close();
}catch(SQLException e){}
rs=null;
}
if(sm!=null)
{
try{
sm.close();
}catch(SQLException e){}
sm=null;
}
if(con!=null)
{
try{
con.close();
}catch(SQLException e){}
con=null;
}
}
%>
</head>
<body>
</body>
</html>