Tomcat5.08数据库连接池配置

来源:互联网 发布:网络教育证书有用吗 编辑:程序博客网 时间:2024/05/22 12:33

使用数据库连接池可以提高数据库的访问性能。Tomcat的数据库连接池是使用Jakarta-Commons项目中Database Connection Pool,包含下列组件:Jakarta-Commons DBCP 、Jakarta-Commons Collections和Jakarta-Commons Pool。这些库文件包必须和JDBC驱动程序一起安装在$CATALINA_HOME/common/lib这个目录下。如果检查发现没有,请到http://jakarta.apache.org/中下载相应的库文件包。
在$CATALINA_HOME/common/lib必须有下列包:
• commons-collections.jar。
• commons-dbcp.jar。
• commons-pool.jar。
• mysql-connector-java-3.0.7-stable-bin.jar //MySQL的驱动程序。
确定这些库文件包确实无误后,进行Tomcat的配置。
我使用的环境为Tomcat 5.08,数据库为Sqlserver2000 ;
有两种配置方法:

第一种:仅为一个具体的工程所使用而配置的数据源
第一步:打开%Tomcat_Home%/conf/server.xml,在</Context>和</host>前添加描述
<Context path="/friend" docBase="e:/snail" debug="0" reloadable="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>

注释: “friend”是工程名,JNDI name 是 “jdbc/mydatasource”
           用户名和密码都是"sa"
第二步,一旦Tomcat容器配置完成后,就可以在应用系统通过JNDI访问到这个数据库连接池。
在工程friend里更改web.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<!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>
<display-name>My Web Application</display-name>
<description>
A application for test.
</description>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mydatasource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>

这样在Web容器中,通过java:comp/env/jdbc/mydatasource就可以寻找到jdbc/mydatasource的连接池。注意,在Java代码中写JNDI Name时,要加上java:comp/env/,这也是通用规定。

第三步,重新启动tomcat。
第四步,可以在工程friend里写个测试页面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中配置连接池的两种方法都全写出来了.
再添加一点struts下的连接池配置

首先,要去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();
        }

原创粉丝点击