Tomcat 6.0+ SQL Server 2005连接池的配

转自:http://blog.csdn.net/zzz_robinson/article/details/5570748

 

Tomcat连接池连接SQL Server 2005 Express

 

在Tomcat作为服务器调试JSP时,可以通过配置数据库连接池,实现简单配置。

下面是配置连接SQL Server 2005 Express的过程,JDBC为Microsoft的Microsoft SQL Server 2005 JDBC Driver1.2。

首先要保证能够正常调试JSP,也就是安装JSDK,和Tomcat,我选择的较旧的版本,j2sdk1.4.2_06和Tomcat 5.0.16。

安装完成后配置ClassPath,(安装目录为:D:/j2sdk1.4.2_06和D:/Program Files/Apache Software Foundation/Tomcat 5.0)

1、配置系统变量JAVA_HOME:D:/j2sdk1.4.2_06

2、系统变量CATALINA_HOME:/Program Files/Apache Software Foundation/Tomcat 5.0

                   CATALINA_BASE:D:/Program Files/Apache Software Foundation/Tomcat 5.0

3、配置系统变量classpath:

.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar;D:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/servlet-api.jar

4、在系统变量Path最后添加:%JAVA_HOME%/bin

5、将JDBC1.2安装目录下的sqljdbc.jar,复制到D:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib,将D:/j2sdk1.4.2_06/lib/tools.jar也复制到该目录。

以上配置完成后重新启动计算机,使设置生效,然后启动Tomcat,打开http://localhost:8080/,Tomcat的欢迎画面说明成功。

下面是数据库的配置,SQL Server 2005 Express在安装完成后是不允许通过TCP/IP连接的,因此需要配置:

进入SQL Server 2005 Express配置工具--SQL Server 外围应用配置器,在服务和连接的外围应用配置器中,配置使用TCP/IP连接。如下图:

配置完成后,重新启动SQLServer服务

可以配置SQL SERVER安全性,允许设定的用户连接,而不是使用sa进行连接。

另外值得注意的是,需要设置SQL SERVER使用SQL SERVER的身份验证模式:

在SQL SERVER Management Studio对象资源管理器中,右击服务器实例名称,在属性窗口中设置使用SQL SERVER和Windows 身份验证模式:

此时,便可以使用你创建的用户来访问SQL SERVER了,这里我创建了一个数据库Teacherinfo,并创建用户teacher,密码123456,来作为数据库OWER,通过网络访问

下面开始Tomcat 的配置:

1、进入http://localhost:8080/,打开Tomcat Administrator,登入,选择Data Sources,然后选择创建新的数据源,名称为MSSQL,需要在程序中使用,可以随便取,最好有标示作用:

配置说明:

JNDI Name:注册到JNDI树上的名字(可以随便写)
Data Source URL:连接数据库的URL
JDBC Driver Class:Jbdc数据库的驱动名称
User Name:访问数据库的用户
Password:访问数据库的密码
Max. Active Connections:最大活跃连接数,指同时可以有多少个连接,设置为0没有限制
Max. Idle Connections:最大空闲连接数,表示没有数据库连接时,连接池也必须保持最大空闲连接数,设置为0没有限制
Max. Wait for Connection:连接建立等待时间,单位为毫秒,设置为-1无限制
Validation Query::此参数用来查询池中的空闲连接(可以不配置)

注意:在SQL SERVER 2005中连接项与SQL SERVER 2000不同:

jdbc:sqlserver://localhost:1433;DatebaseName=teacherinfo
com.microsoft.sqlserver.jdbc.SQLServerDriver
 
其他选项根据需要填写,用户名和密码不要填写错了。
填写完成后,单击SAVE保存,还要单击:Commit Changes按钮提交修改,否则将不会生效
 
完成后,打开Tomcat的server.xml文件,发现已经在 <GlobalNamingResources>和</GlobalNamingResources>之间添加了如下代码:(所以也可以自己直接添加)

 
 <Resource type="javax.sql.DataSource" name="MSSQL"/>
       <ResourceParams name="MSSQL">
      <parameter>
        <name>url</name>
        <value>jdbc:sqlserver://localhost:1433;DatebaseName=teacherinfo</value>
      </parameter>
      <parameter>
        <name>password</name>
        <value>123456</value>
      </parameter>
      <parameter>
        <name>maxActive</name>
        <value>4</value>
      </parameter>
      <parameter>
        <name>maxWait</name>
        <value>5000</value>
      </parameter>
      <parameter>
        <name>driverClassName</name>
        <value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
      </parameter>
      <parameter>
        <name>username</name>
        <value>teacher</value>
      </parameter>
      <parameter>
        <name>maxIdle</name>
        <value>2</value>
      </parameter>
    </ResourceParams>

 

2、配置完成了,下面就是如何应用到程序中去了,假设有一个WEB应用程序,mclass可以通过http://localhost:8080/mclass 的形式访问,那么在:D:/Program Files/Apache Software Foundation/Tomcat 5.0/conf/Catalina/localhost目录中应该有一个mclass.xml文件,内容至少应该包含如下:

 <Context path="/mclass" displayName="Welcome to Tomcat" docBase="F:/mclass"></Context>

现在在<Context></Context>之间添加上数据库连接的内容,否则该程序将无法使用连接池,添加后如下(内容是从server.xml中复制过早来的):

 <Context path="/mclass" displayName="Welcome to Tomcat" docBase="F:/eclipse/workspace/mclass">
  <Resource type="javax.sql.DataSource" name="MSSQL"/>
  <ResourceParams name="MSSQL">
    <parameter>
      <name>url</name>
      <value>jdbc:sqlserver://localhost:1433;DatebaseName=teacherinfo</value>
    </parameter>
    <parameter>
      <name>password</name>
      <value>123456</value>
    </parameter>
    <parameter>
      <name>maxActive</name>
      <value>4</value>
    </parameter>
    <parameter>
      <name>maxWait</name>
      <value>5000</value>
    </parameter>
    <parameter>
      <name>driverClassName</name>
      <value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
    </parameter>
    <parameter>
      <name>username</name>
      <value>teacher</value>
    </parameter>
    <parameter>
      <name>maxIdle</name>
      <value>2</value>
    </parameter>
  </ResourceParams>
</Context>

 

3、现在当然还不可以,需要配置程序目录中的web.xml,本程序在F:/mclass

打开F:/mclass/WEB-INF中的web.xml,添加如下代码,到<web-app></web-app>之间

<resource-ref>
  <description>sqlserverDB Connection</description>
  <res-ref-name>MSSQL</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
</resource-ref>

description是描述,自己定义

res-ref-name是连接的名称,必须与在Tomcat中连接池的名称一致,此处是MSSQL

res-type当然是javax.sql.DataSource了

res-auth是程序中使用的

至此,配置完全完成,下面就是测试了,首先重新启动Tomcat,以使配置生效,然后在F:/mlass中创建一个文件如test.jsp,内容可以参考如下代码:

 <%@ page contentType="text/html;charset=GBK"%>
<%@ page import="java.sql.*" %>
<%@ page import="javax.naming.*" %>
<%@ page import="javax.sql.*" %>
<html>
<head>
<title>test</title>
</head>
<body>
<%   
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    ResultSetMetaData md = null;
    try
    {
     Context initCtx = new InitialContext();
     DataSource ds = (DataSource)initCtx.lookup("java:comp/env/MSSQL");
     if(ds!=null)
     {
      out.println("已经获得DataSource<br>");     //显示获取的DataSource
      out.println(ds.toString());
      conn = ds.getConnection();
      out.println("conn=" + conn + "<br>");
      stmt = conn.createStatement();
       rs = stmt.executeQuery("select * from teacher");   //获取teacher表中的数据
      md = rs.getMetaData();
      out.println("<table border=1>");
      out.println("<tr align='center'>");

     //获取字段名称,作为表格第一行
      for(int i=0; i<md.getColumnCount();i++)
       out.println("<td>" + md.getColumnName(i+1) + "</td>");  

      out.println("</tr>");

    //显示获取的表格数据
      while(rs.next())
      {
       out.println("<tr>");
       for(int j=0;j<md.getColumnCount();j++)
        out.println("<td>" + rs.getString(j+1) + "&nbsp;</td>");
       out.println("</tr>");        
      }
      out.println("</table>");

       //关闭连接,此处关闭连接,只是将其又放回到连接池中,还可以再次使用
      conn.close();         
     }
    }
  catch(Exception e)
  {
   out.println(e.toString());
   System.out.println(e.toString());
  }
 
%>

<</body>
</html>

 

posted on 2012-04-21 17:41  王培  阅读(866)  评论(0编辑  收藏  举报

导航