Tomcat 连接池配置心得

来源:互联网 发布:淘宝德芙假的多么 编辑:程序博客网 时间:2024/06/03 02:13
  以前配置过连接池,今天又配置,怎么都想不起来要怎么设置.好不容易配置好了,但也花了我3个小时, 痛定思痛,赶紧把相关步骤记录下来.
首先,我使用的环境为Tomcat 5.0,数据库为Sqlserver2000 ;
有两种配置方法:

第一种:仅为一个具体的工程所使用而配置的数据源
第一步:打开%Tomcat_Home%/conf/server.xml,在</Context>和</host>前添加描述
<Context path="/ch13" docBase ="ch13" debug="0" reloadable ="true" crossContext="true">
    <Resource name = "jdbc/mydatasource" auth="Container" type="javax.sql.DataSource"/>
    <ResourceParams name ="jdbc/mydatasource">
    <parameter>
        <name>factory</name>
        <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>
    <parameter>       
        <name>driverClassName</name>       
        <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>       
    </parameter>   
    <parameter>   
        <name>url</name>       
        <value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=pubs</value>   
    </parameter>       
    <parameter>   
        <name>username</name>       
        <value>sa</value>       
    </parameter>             
    <parameter>             
        <name>password</name>           
        <value>sa</value>   
    </parameter>           
    <parameter>           
        <name>maxActive</name>       
        <value>20</value>           
    </parameter>
    <parameter>       
        <name>maxIdle</name>       
        <value>10</value>           
    </parameter>       
    <parameter>   
        <name>maxWait</name>       
        <value>-1</value>       
    </parameter>
    </ResourceParams>
</Context>
注释: “ch13”是工程名,JNDI name 是 “jdbc/mydatasource”
           用户名和密码都是"sa"
第二步,将ms sqlserver要用到的三个驱动包复制到%tomcat_home%/common/lib目录下。
第三步,重新启动tomcat。
第四步,可以在工程ch13里写个测试j页面test.jsp:
<%@pageimport="java.sql.*"%>
<%@pageimport="javax.sql.*"%>
<%@pageimport="javax.naming.*"%>
<%
  DataSource ds=null;
  try{
  InitialContext ctx=new InitialContext();
  ds=(DataSource)ctx.lookup("java:comp/env/jdbc/mydatasource");
  Connection  conn=ds.getConnection();
  Statement stmt=conn.createStatement();
  String strSql="select *  from  authors";
  ResultSet rs=stmt.executeQuery(strSql);
  while(rs.next()){
     out.println(rs.getString(1)+"<br>");               
    }
  }
  catch(Exception ex){
      out.println("出错啦!!!");
      ex.printStackTrace();
  }
%>
如果能正常显示多行数据则测试成功,否则失败。


第二种是针对Tomcat中所有的工程进行的配置,可以使用Tomcat图形界面进行设置
 第一步,通过IE浏览器进入Tomcat Administration ,用户名和密码就是安装tomcat时设置的密码.,然后选择create  New  DataSource.
输入如下:
JNDI name :jdbc/allds
password :sa
可根据实际修改密码
第二步 :在%tomcat_home%/conf/Catalina/localhost目录下找到要使用此数据源的工程同名的xml文件.
在Context一节中加入以下代码:
<ResourceLink name="jdbc/allds" global="jdbc/allds" type="javax.sql.DataSourcer"/>
第三步,在%tomcat_home%'/common/lib中添加要用到的sqlserver的驱动包,重新启动tomcat.
第四步,测试.在刚才要使用数据源的工程中添加test.jsp,代码如下:
<%@pageimport="java.sql.*"%>
<%@pageimport="javax.sql.*"%>
<%@pageimport="javax.naming.*"%>
<%
  DataSource ds=null;
  try{
  InitialContext ctx=new InitialContext();
  ds=(DataSource)ctx.lookup("java:comp/env/jdbc/allds");
  Connection  conn=ds.getConnection();
  Statement stmt=conn.createStatement();
  String strSql="select *  from  authors";
  ResultSet rs=stmt.executeQuery(strSql);
  while(rs.next()){
     out.println(rs.getString(2)+"<br>");               
    }
  }
  catch(Exception ex){
      out.println("出错啦!!!");
      ex.printStackTrace();
  }
%>
至此.tomcat中配置连接池的两种方法都全写出来了.  不周之处,请发emai 与我.:)

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=776897

本人添加一点struts下的连接池配置(andycpp的专栏)

首先,要去Apache的官方网站下载两个软件包,分别是:
commons-dbcp-1.2.1和commons-pool-1.3
将其中的jar文件拷贝到Struts项目的lib文件夹中。
对struts-config文件进行配置,在其中加入如下内容:
<data-sources>
<data-source type="org.apache.commons.dbcp.BasicDataSource">
    <set-property
      property="driverClassName"
      value="com.mysql.jdbc.Driver" />
    <set-property
      property="url"
      value="jdbc:mysql://localhost/test" />
    <set-property
      property="username"
      value="root" />
    <set-property
      property="password"
      value="123456" />
    <set-property
      property="maxActive"
      value="10" />
    <set-property
      property="maxWait"
      value="5000" />
    <set-property
      property="defaultAutoCommit"
      value="false" />
    <set-property
      property="defaultReadOnly"
      value="false" />
    <set-property
      property="validationQuery"
      value="SELECT COUNT(*) FROM student" />
</data-source>
</data-sources>

最后,在你写的Action类中可以使用如下代码访问数据库:
        DataSource ds = null;
        Connection cn = null;
        try{
            ds = getDataSource(request);
            cn = ds.getConnection();
            Statement st = cn.createStatement();
            ResultSet rs = st.executeQuery("select * from student");
            rs.next();
            String s = rs.getString(1);
            System.out.println(s);
            return mapping.findForward("showresult");
        }catch(Exception e){
            e.printStackTrace();
        }