Tomcat5的數(shù)據(jù)庫連接池設(shè)置-JSP編程-華夏名網(wǎng)資訊中心 虛擬主機(jī),域名注冊,雙線虛擬主機(jī),服務(wù)器租賃,為7萬用戶提供服務(wù)
本文主要介紹Tomcat5.0.25這個版本下數(shù)據(jù)庫連接池的設(shè)置,及程式對連接池的JNDI查找,并提供相應(yīng)測試代碼。最后指出設(shè)置及應(yīng)用過程中的常見問題及解決方法。
1 .該文的設(shè)置環(huán)境:Tomcat5.0.25 + jdk1.4+ Sql Server 2000+Win2000
2.設(shè)置步驟:
第一步:
啟動Tomcat,打開IE在地址欄內(nèi)輸入http://localhost:8080/admin 進(jìn)入Tomcat的管理界面;點(diǎn)擊右邊的Data Sources 在右上角的下拉菜單中選擇Create New Data Source 在下邊的輸入框中輸入需要的設(shè)置信息。
JNDI Name:jdbc/XXX(XXX為自己所命的名字)
Data Source URL:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb(連接的數(shù)據(jù)名)
JDBC Driver Class: com.microsoft.jdbc.sqlserver.SQLServerDriver
User Name:連接數(shù)據(jù)庫的用戶名
Password: 數(shù)據(jù)庫密碼
Max. Active Connections: 最大連接數(shù)
Max. Idle Connections: 是最大的空閑連接數(shù)
Max. Wait for Connection: 最大等待連接數(shù)
第二步:設(shè)置web.xml
打開webapps/ROOT/WEB-INF下web.xml,加入如下內(nèi)容:
<resource-ref>
<description>SqlServer Datasource example</description>
<res-ref-name>jdbc/SqlServerDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
第三步:設(shè)置tomcat(添加類)
首先要下載安裝sqlserver-jdbc-驅(qū)動,然后將其lib下的三個jar文件放到
tomcat/common/lib下。
注意事項:
如果是單個JSP頁面我們將他放在TOMCAT_HOME/webapps/ROOT下邊,同時還須修改TOMCAT_HOME/conf/Catalina/localhost/下的ROOT.xml文件,在
<Resource auth="Container" description="SqlServer Datasource example" name="jdbc/SqlServerDB" type="javax.sql.DataSource"/>下邊加入:
<ResourceLink global="jdbc/test" name="jdbc/test" type="javax.sql.DataSource"/>
來引用所設(shè)置的JNDI數(shù)據(jù)源。同時將<Resource auth="Container" description="SqlServer Datasource example" name="jdbc/SqlServerDB" type="javax.sql.DataSource"/>注釋掉
如果我們要部署的是個WEB應(yīng)用程式,我們將該應(yīng)用程式放在TOMCAT_HOME/webapps目錄下,有兩種方式能引用我們所設(shè)置的JNDI數(shù)據(jù)源。
A:能在TOMCAT_HOME/conf/Catalina/localhost下新建XXX.xml文件,XXX為所發(fā)布的WEB應(yīng)用的名字,如我所發(fā)布的WEB應(yīng)用是JndiTest,.xml文件命名為JndiTest.xml在該文件內(nèi)加:
<?xml version=’1.0’ encoding=’utf-8’?>
<Context debug="1" docBase="E:/Tomcat 5.0/webapps/JndiTest" path="/JndiTest" reloadable="true" workDir="workCatalinalocalhostJndiTest">
<Resource name="jdbc/test" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/test">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>password</name>
<value>jsjrj</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
</ResourceParams>
</Context>
其中E:/Tomcat 5.0/webapps/JndiTest為你所發(fā)布應(yīng)用程式的目錄,這樣就能進(jìn)行測試了。
這樣做就是每個WEB應(yīng)用程式都須創(chuàng)建一個象JndiTest.xml這樣的文件。
B;為了避免每個WEB應(yīng)用程式都創(chuàng)建XXX.xml文件,我們能修改TOMCAT_HOME/conf下的server.xml文件,修改如下:
在<Host></Host>之間加入:
<Context path="/JndiTest" docBase="E:/Tomcat 5.0/webapps/JndiTest" debug="1" reloadable="true">
<Resource name="jdbc/test" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/test">
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>password</name>
<value>jsjrj</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
</ResourceParams>
</Context>
<Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" type="org.apache.catalina.UserDatabase"/>下的
<Resource name="jdbc/test" type="javax.sql.DataSource"/>
同時移去上邊的這段:(也能不移去)<ResourceParams name="jdbc/test">
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>password</name>
<value>jsjrj</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
</ResourceParams>
注意要在每個WEB應(yīng)用程式的web.xml文件中都加入
<resource-ref>
<description>SqlServer Datasource example</description>
<res-ref-name>jdbc/SqlServerDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
3.測試
編寫jsp文件:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<html>
<body>
<%
Context ctx = new InitialContext();
Connection conn=null;
ctx = new InitialContext();
DataSource ds =(DataSource)ctx.lookup("java:comp/env/jdbc/test");
conn = ds.getConnection();
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from T_Student";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
<%
out.print(rs.getString(1));
out.print(rs.getString(2));
out.print(rs.getString(3));
}%>
<%
out.print("數(shù)據(jù)庫操作成功,恭喜你");
rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
本文引用通告地址: http://www.donews.net/lonelyfirefly/services/trackbacks/124277.aspx
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報。