Tomcat相信大家已經很熟悉了,作為一種免費而強大的java web server,得到了很多java愛好者的青睞,最新版本的tomcat5支持servlet2.4和jsp2.0,今天我將采用Tomcat5和Ms sqlserver 000一起來開始數據庫連接池配置之旅。
需要的準備
1、jdk 我使用的版本1.4.01
2、Tomcat 5 我使用的是5.0.16版本 下載地址:http://jakarta.apache.org/site/binindex.cgi
3、Mssql server 2000 數據庫
4、Mssql server 2000的官方jdbc driver ,可以到微軟的官方網站免費下載
好了在安裝完上面的軟件之后,就進入配置實戰了:)
一、找到jdbc的安裝目錄,把lib目錄下面的msbase.jar和mssqlserver.jar、msutil.jar三個文件一起copy到$CATALINA_HOME/common/lib/($CATALINA_HOME代表的是你的tomcat5的安裝目錄)
二、用文本編輯器,我這是使用editplus(她可是我的摯愛奧)打開$CATALINA_HOME/conf/server.xml文件,找到配置context的地方,把下面的代碼
粘貼到文件里面
<Context path="/DBTest" docBase="D:\rautinee work\db\"
???????? debug="5" reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger"
????????????? prefix="localhost_DBTest_log." suffix=".txt"
????????????? timestamp="true"/>
<Resource name="jdbc/TestDB"
??????????????? auth="Container"
??????????????? type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/TestDB">
???? <parameter>
?????? <name>factory</name>
?????? <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
???? </parameter>
???? <!-- Maximum number of dB connections in pool. Make sure you
????????? configure your mysqld max_connections large enough to handle
????????? all of your db connections. Set to 0 for no limit.
????????? -->
???? <parameter>
?????? <name>maxActive</name>
?????? <value>100</value>
???? </parameter>
???? <!-- Maximum number of idle dB connections to retain in pool.
????????? Set to 0 for no limit.
????????? -->
???? <parameter>
?????? <name>maxIdle</name>
?????? <value>30</value>
???? </parameter>
???? <!-- Maximum time to wait for a dB connection to become available
????????? in ms, in this example 10 seconds. An Exception is thrown if
????????? this timeout is exceeded.??? Set to -1 to wait indefinitely.
????????? -->
???? <parameter>
?????? <name>maxWait</name>
?????? <value>10000</value>
???? </parameter>
???? <!-- MSSQLserver dB username and password for dB connections??? -->
???? <parameter>
????? <name>username</name>
????? <value>sa</value>
???? </parameter>
???? <parameter>
????? <name>password</name>
????? <value></value>
???? </parameter>
???? <!-- Class name for mssqlserver JDBC driver -->
???? <parameter>
??????? <name>driverClassName</name>
??????? <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
???? </parameter>
???? <!-- The JDBC connection url for connecting to your mssqlserver dB.-->
???? <parameter>
?????? <name>url</name>
?????? <value>jdbc:microsoft:sqlserver://localhost:1433;databasename=Northwind</value>
???? </parameter>
</ResourceParams>
</Context>
注意:我本地的數據庫的sa的密碼為空,數據庫使用的是Northwind,我的目錄名DBTest,他的目錄是D:\rautinee work\db\
打開DBTest下面的web.xml文件,用下面的代碼替換原來的內容
<?xml version="1.0" encoding="ISO-8859-1"?>
???? <!DOCTYPE web-app PUBLIC
???? "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
???? "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<description>MSSql server Test App</description>
<resource-ref>
?????? <description>DB Connection</description>
?????? <res-ref-name>jdbc/TestDB</res-ref-name>
?????? <res-type>javax.sql.DataSource</res-type>
?????? <res-auth>Container</res-auth>
</resource-ref>
</web-app>
ok,配置完成,下面的工作是需要編寫兩個文件測試一下,連接是否成功。
這里我用了http://jakarta.apache.org上面的例子
首先是bean文件
package foo;
import javax.naming.*;
import javax.sql.*;
import java.sql.*;
public class DBTest {
String foo = "Not Connected";
int bar = -1;
???
public void init() {
???? try{
?????? Context ctx = new InitialContext();
?????? if(ctx == null )
?????????? throw new Exception("Boom - No Context");
?????? DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/TestDB");
?????? if (ds != null) {
???????? Connection conn = ds.getConnection();
?????????????
???????? if(conn != null)??? {
???????????? foo = "Got Connection "+conn.toString();
???????????? Statement stmt = conn.createStatement();
???????????? ResultSet rst =
???????????????? stmt.executeQuery("select * from orders");
???????????? if(rst.next()) {
??????????????? foo=rst.getString("CustomerID");
??????????????? bar=rst.getInt("OrderID");
???????????? }
???????????? conn.close();
???????? }
?????? }
???? }catch(Exception e) {
?????? e.printStackTrace();
???? }
}
public String getFoo() { return foo; }
public int getBar() { return bar;}
}
然后是index.jsp文件
<html>
<head>
???? <title>DB Test</title>
</head>
<body>
<%
???? foo.DBTest tst = new foo.DBTest();
???? tst.init();
%>
<h2>Ms sql server 2000 java search Results</h2>
???? Foo <%= tst.getFoo() %><br/>
???? Bar <%= tst.getBar() %>
</body>
</html>
'www.knowsky.com
編譯運行,如果不出意外,應該檢索到一條記錄,
我的ie中顯示的是
Ms sql server 2000 java search Results
Foo VINET
Bar 10248
ok,配制成功!