tomcat5.5.9+sql2000數(shù)據(jù)庫連接池配置的一些心得體會(huì)
作者:chiefboy
版權(quán)聲明:本文可以自由轉(zhuǎn)載,轉(zhuǎn)載時(shí)請務(wù)必以超鏈接形式標(biāo)明文章原始出處和作者信息及本聲明
作者:葉楓
原
文:[http://www.matrix.org.cn/resource/article/44/44021_tomcat_sql2000.html]http://www.matrix.org.cn/resource/article/44/44021_tomcat_sql2000.html[/url]
關(guān)鍵字:tomcat sql2000
????
終于解決了困擾多天的連接池的問題,寫下這編文章與大家一起分享。我是在tomcat5.5.9下配置的,tomcat5.5.X和以前的版本有一些差
別,所以配置上也有差別。我就說一下在tomcat5.5.9配置的基本步驟:(確定你以安裝好tomcat5.5.9、sql2000)
1、把數(shù)據(jù)庫JDBC驅(qū)動(dòng)拷貝到%TOMCAT_HOME%/common/lib和%TOMCAT_HOME%/webapps/yourweb/WEB-INF/lib下(我的web文件夾名字叫quickstart)
這一步大家都知道,不然tomcat無法與數(shù)據(jù)庫連接。
2、修改%TOMCAT_HOME%/conf/server.xml文件,在??<GlobalNamingResources></GlobalNamingResources>之間
添加以下內(nèi)容:
????
<Resource
??????name="jdbc/quickstart"
??????type="javax.sql.DataSource"
??????password="123456"
??????driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
??????maxIdle="2"
??????maxWait="5000"
??????username="sa"
??????url="jdbc:microsoft:sqlserver://localhost;DatabaseName=quickstart"
??????maxActive="4"/>
以上內(nèi)容根據(jù)大家的具體情況進(jìn)行相應(yīng)修改,比如:把name="jdbc/quickstart"中的quickstart改成和你web文件夾名稱一樣,把password="123456"中的“123456”改成你數(shù)據(jù)庫的密碼。
3、在%TOMCAT_HOME%/conf/Catalina/localhost下新建一個(gè)與你web文件夾同名的xml文件(我的是quickstart.xml)
這一步非常重要,如果沒有這步就會(huì)出錯(cuò),會(huì)出現(xiàn)
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
這樣的錯(cuò)誤,在文件中加入第2步的內(nèi)容,如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
???? <Resource
??????name="jdbc/quickstart"
??????type="javax.sql.DataSource"
??????password="123456"
??????driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
??????maxIdle="2"
??????maxWait="5000"
??????username="sa"
??????url="jdbc:microsoft:sqlserver://localhost;DatabaseName=quickstart"
??????maxActive="4"/>
</Context>
根據(jù)個(gè)人具體情況進(jìn)行相應(yīng)修改。
4、修改%TOMCAT_HOME%/webapps/yourweb/WEB-INF下的web.xml文件,在<web-app></web-app>之間添加以下內(nèi)容
<resource-ref>
????<description>sqlserverDB Connection</description>
????<res-ref-name>jdbc/quickstart</res-ref-name>
????<res-type>javax.sql.DataSource</res-type>
????<res-auth>Container</res-auth>
??</resource-ref>
把<res-ref-name>jdbc/quickstart</res-ref-name>中的quickstart改成你的web文件夾名稱。
5、測試,在quickstart下新建一個(gè)index.jsp文件
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="javax.naming.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>JDBC Test</title>
</head>
<body>
<%
????????Connection conn=null;
????????Statement stmt=null;
????????ResultSet rs=null;
????????ResultSetMetaData md=null;
????????try
????????{
????????????????Context initCtx=new InitialContext();
????????????????
????????????????DataSource ds=(DataSource)initCtx.lookup("java:comp/env/jdbc/quickstart");
????????????????if(ds!=null)
????????????????{
????????????????????????out.println("已經(jīng)獲得DataSource");
????????????????????????out.println(ds.toString());
????????????????????????conn=ds.getConnection();
????????????????????????stmt=conn.createStatement();
????????????????????????out.println("aa");
????????????????????????rs=stmt.executeQuery("select * from cat");
????????????????????????md=rs.getMetaData();
????????????????????????out.println("<table border=1>");
????????????????????????out.println("<tr>");
????????????????????????for(int i=0;i<md.getColumnCount();i++)
????????????????????????{
????????????????????????????????out.println("<td>"+md.getColumnName(i+1)+"</td>");
????????????????????????}
????????????????????????while(rs.next())
????????????????????????{
????????????????????????????????out.println("<tr>");
????????????????????????????????out.println("<td>"+rs.getString(1)+"</td>");
????????????????????????????????out.println("<td>"+rs.getString(2)+"</td>");
????????????????????????????????out.println("<td>"+rs.getString(3)+"</td>");
????????????????????????????????out.println("<td>"+rs.getString(4)+"</td>");
????????????????????????????????out.println("</tr>");
????????????????????????}
????????????????????????out.println("</table>");
????????????????????????conn.close();
????????????????}
????????????????
????????}
????????catch(Exception e)
????????{
????????????????out.println(e.toString());
????????????????System.out.println(e.toString());
????????}
%>
</body>
</html>