Tomcat5+Mssql server 2000数据库连接池配置之旅

  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,配制成功!

  参考文档:

  http://jakarta.apache.org/tomcat/tomcat-5.0-doc/jndi-datasource-examples-howto.html 上面有mysql和oracle8i的连接教程,有兴趣的朋友可以上去看一下。

  作者 海仔  email:[email protected]  http://www.tryitsoft.com