本文主要介紹Tomcat5.0.25這個版本下數據庫連接池的配置,及程序對連接池的JNDI查找,并提供相應測試代碼。最后指出配置及應用過程中的常見問題及解決方法。
1?.該文的配置環境:Tomcat5.0.25?+?jdk1.4+?Sql?Server?2000+Win2000
2.配置步驟:
第一步:
啟動Tomcat,打開IE在地址欄內輸入
http://localhost:8080/admin??進入Tomcat的管理界面;點擊右邊的Data?Sources?在右上角的下拉菜單中選擇Create?New?Data?Source?在下邊的輸入框中輸入需要的配置信息。
JNDI?Name:jdbc/XXX(XXX為自己所命的名字)
Data?Source?URL:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb(連接的數據名)
JDBC?Driver?Class:?com.microsoft.jdbc.sqlserver.SQLServerDriver
User?Name:連接數據庫的用戶名?
Password:?數據庫密碼
Max.?Active?Connections:?最大連接數
Max.?Idle?Connections:?是最大的空閑連接數
Max.?Wait?for?Connection:?最大等待連接數
?
第二步:配置web.xml
打開webapps/ROOT/WEB-INF下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>
第三步:配置tomcat(添加類)
首先要下載安裝sqlserver-jdbc-驅動,然后將其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"/>
來引用所配置的JNDI數據源。同時將<Resource?auth="Container"?description="SqlServer?Datasource?example"?name="jdbc/SqlServerDB"?type="javax.sql.DataSource"/>注釋掉
????如果我們要部署的是個WEB應用程序,我們將該應用程序放在TOMCAT_HOME/webapps目錄下,有兩種方式可以引用我們所配置的JNDI數據源。
A:可以在TOMCAT_HOME/conf/Catalina/localhost下新建XXX.xml文件,XXX為所發布的WEB應用的名字,如我所發布的WEB應用是JndiTest,.xml文件命名為JndiTest.xml在該文件內加:
<?xml?version='1.0'?encoding='utf-8'?>
<Context?debug="1"?docBase="E:/Tomcat?5.0/webapps/JndiTest"?path="/JndiTest"?reloadable="true"?workDir="work\Catalina\localhost\JndiTest">
??<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為你所發布應用程序的目錄,這樣就可以進行測試了。
這樣做就是每個WEB應用程序都須創建一個象JndiTest.xml這樣的文件。
B;為了避免每個WEB應用程序都創建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應用程序的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("數據庫操作成功,恭喜你");
rs.close();?
stmt.close();?
conn.close();?
%>?
</body>?
</html>
posted on 2006-04-05 14:08
kelven 閱讀(272)
評論(0) 編輯 收藏 所屬分類:
其它