Tomcat 5.5.15 和SQLServer2000 SP3基于SQLServer2000JDBC SP3 的連接池配制
一、準(zhǔn)備
需要下載:
1. tomcat5.5.15
2. Tomcat5.5.15admin
3. SQLServer2000JDBC SP3或者jtds
安裝tomcat。并添加admin角色和用戶。
將jdbc驅(qū)動(dòng)包放到tomcat_home\common\lib目錄下。
在MyEclipse建立一個(gè)新的Web項(xiàng)目。使用剛才配置的tomcat作為服務(wù)器。
啟動(dòng)tomcat。
二、配置
打開(kāi)tomcat。
登錄 Tomcat Web Server Administration Tool.
點(diǎn)擊左側(cè)的Data Sources。
在右側(cè)Available Actions下拉菜單中選擇Create New Data Source.
輸入
JNDI Name:
Data Source URL:
JDBC Driver Class:
User Name:
Password:
Max.Active Connections:最大活動(dòng)連結(jié)數(shù) ,0為不限 。
Max.Idle Connections:最大等待連結(jié)數(shù) ,0為不限 。
Max.Wait for Connection:建立連接超時(shí)時(shí)間ms,-1為無(wú)限 。
注:使用SQLServer的官方JDBC驅(qū)動(dòng),Class=com.microsoft.jdbc.sqlserver.SQLServerDriver,URL=jdbc:Microsoft:sqlserver://127.0.0.1:1433;databaseName=aa;使用開(kāi)源的驅(qū)動(dòng)Jtds,Class=net.sourceforge.jtds.jdbc.sqlserver,URL=jdbc:jtds:sqlserver://127.0.0.1:1433/aa
輸入完畢,點(diǎn)擊“Save”按鈕保存。
點(diǎn)擊頁(yè)面右上側(cè)“Commit Changes”按鈕,保存剛才的設(shè)置。(這一步很重要哦?。?/P>
打開(kāi)tomcat_home\conf\server.xml的< GlobalNamingResources></ GlobalNamingResources>中找到
<Resource
name="jdbc/mydbcp"
type="javax.sql.DataSource"
password="aa"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
maxIdle="2"
maxWait="5000"
username="aa"
url="jdbc:microsoft:sqlserver://10.0.2.37:1433;databaseName=aa"
maxActive="4"/>
這是JNDI的主要配置文件,可以不使用圖形界面直接寫入server.xml中。
在tomcat_home\webapps\dbcp\ META-INF\context.xml的<context></context>中填入上面的代碼。
如果更改了JNDI,則必須手動(dòng)更改context.xml。
<Resource
name="mydbcp" 注:此處不同
type="javax.sql.DataSource"
password="aa"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
maxIdle="2"
maxWait="5000"
username="aa"
url="jdbc:microsoft:sqlserver://10.0.2.37:1433;databaseName=aa"
maxActive="4"/>
和
<ResourceLink
global="jdbc/mydbcp"
name="jdbc/mydbcp"
type="javax.sql.DataSource"/>
重起tomcat。
連接方法:
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/mydbcp");
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from systypes");
三、測(cè)試
測(cè)試實(shí)例:test.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page import="java.sql.*,javax.sql.DataSource,javax.naming.*"%>
<html>
<head>
<title>
tomcat 連接池
</title>
</head>
<body bgcolor="#ffffff">
<h3>
test
<br>
連接池3
</h3>
<%try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/mydbcp");
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from systypes");
while (rs.next()) {%>
<br>
<%=rs.getString(1)%>
<%}%>
<%out.print("<br>Successful!成功?。n");%>
<%rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
out.print("出現(xiàn)例外!" + e.getMessage());
e.printStackTrace();
}
%>
</body>
</html>
四、錯(cuò)誤
錯(cuò)誤1:Cannot load JDBC driver class 'com.microsoft.jdbc.sqlserver.SQLServerDriver'
是沒(méi)有將sql jdbc driver包放在common\lib\目錄下。
錯(cuò)誤2:Cannot create PoolableConnectionFactory ([Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.)
SQL數(shù)據(jù)庫(kù)補(bǔ)丁包的問(wèn)題,如果訪問(wèn)的數(shù)據(jù)庫(kù)是SP3,任何問(wèn)題沒(méi)有。不是SP3就會(huì)出現(xiàn)上面的錯(cuò)誤。
錯(cuò)誤3:Name mydbcp is not bound in this Context
在context.xml中加入
<ResourceLink
global="jdbc/mydbcp"
name="jdbc/mydbcp"
type="javax.sql.DataSource"/>