zoukankan      html  css  js  c++  java
  • Tomcat5的数据库连接池配置

    本文主要介绍Tomcat5.0.25这个版本下数据库连接池的配置,及程序对连接池的JNDI查找,并提供相应测试代码。最后指出配置及应用过程中的常见问题及解决方法。

    1 .该文的配置环境:Tomcat5.0.25 + jdk1.4+ Sql Server 2000+Win2000

    2.配置步骤:

    第一步:

    启动Tomcat,打开IE在地址栏内输入http://localhost:8080/admin  进入Tomcat的管理界面;点击右边的Data Sources 在右上角的下拉菜单中选择Create New Data Source 在下边的输入框中输入需要的配置信息。

    JNDI Name:jdbc/XXX(XXX为自己所命的名字)

    Data Source URL:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb(连接的数据名)

    JDBC Driver Class: com.microsoft.jdbc.sqlserver.SQLServerDriver

    User Name:连接数据库的用户名 

    Password: 数据库密码

    Max. Active Connections: 最大连接数

    Max. Idle Connections: 是最大的空闲连接数

    Max. Wait for Connection: 最大等待连接数

     

    第二步:配置web.xml
    打开webapps/ROOT/WEB-INF下web.xml,加入如下内容:   
    <resource-ref>
      <description>SqlServer Datasource example</description>
      <res-ref-name>jdbc/SqlServerDB</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
      </resource-ref>

    第三步:配置tomcat(添加类)

    首先要下载安装sqlserver-jdbc-驱动,然后将其lib下的三个jar文件放到

    tomcat/common/lib下。

     

    注意事项:

    如果是单个JSP页面我们将它放在TOMCAT_HOME/webapps/ROOT下边,同时还须修改TOMCAT_HOME/conf/Catalina/localhost/下的ROOT.xml文件,在

    <Resource auth="Container" description="SqlServer Datasource example" name="jdbc/SqlServerDB" type="javax.sql.DataSource"/>下边加入:

    <ResourceLink global="jdbc/test" name="jdbc/test" type="javax.sql.DataSource"/>

    来引用所配置的JNDI数据源。同时将<Resource auth="Container" description="SqlServer Datasource example" name="jdbc/SqlServerDB" type="javax.sql.DataSource"/>注释掉

        如果我们要部署的是个WEB应用程序,我们将该应用程序放在TOMCAT_HOME/webapps目录下,有两种方式可以引用我们所配置的JNDI数据源。

    A:可以在TOMCAT_HOME/conf/Catalina/localhost下新建XXX.xml文件,XXX为所发布的WEB应用的名字,如我所发布的WEB应用是JndiTest,.xml文件命名为JndiTest.xml在该文件内加:

    <?xml version='1.0' encoding='utf-8'?>

    <Context debug="1" docBase="E:/Tomcat 5.0/webapps/JndiTest" path="/JndiTest" reloadable="true" workDir="work\Catalina\localhost\JndiTest">

      <Resource name="jdbc/test" type="javax.sql.DataSource"/>

      <ResourceParams name="jdbc/test">

        <parameter>

          <name>factory</name>

          <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>

        </parameter>

        <parameter>

          <name>password</name>

          <value>jsjrj</value>

        </parameter>

        <parameter>

          <name>maxActive</name>

          <value>4</value>

        </parameter>

        <parameter>

          <name>maxWait</name>

          <value>5000</value>

        </parameter>

        <parameter>

          <name>url</name>

          <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb</value>

        </parameter>

        <parameter>

          <name>driverClassName</name>

          <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>

        </parameter>

        <parameter>

          <name>username</name>

          <value>sa</value>

        </parameter>

        <parameter>

          <name>maxIdle</name>

          <value>2</value>

        </parameter>

      </ResourceParams>

    </Context>

    其中E:/Tomcat 5.0/webapps/JndiTest为你所发布应用程序的目录,这样就可以进行测试了。

    这样做就是每个WEB应用程序都须创建一个象JndiTest.xml这样的文件。

    B;为了避免每个WEB应用程序都创建XXX.xml文件,我们可以修改TOMCAT_HOME/conf下的server.xml文件,修改如下:

    在<Host></Host>之间加入:

    <Context path="/JndiTest" docBase="E:/Tomcat 5.0/webapps/JndiTest" debug="1" reloadable="true">

        <Resource name="jdbc/test" type="javax.sql.DataSource"/>

        <ResourceParams name="jdbc/test">

          <parameter>

            <name>url</name>

            <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb</value>

          </parameter>

          <parameter>

            <name>driverClassName</name>

            <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>

          </parameter>

          <parameter>

            <name>maxWait</name>

            <value>5000</value>

          </parameter>

          <parameter>

            <name>maxActive</name>

            <value>4</value>

          </parameter>

          <parameter>

            <name>password</name>

            <value>jsjrj</value>

          </parameter>

          <parameter>

            <name>maxIdle</name>

            <value>2</value>

          </parameter>

          <parameter>

            <name>username</name>

            <value>sa</value>

          </parameter>

          <parameter> 

            <name>factory</name> 

            <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> 

          </parameter> 

        </ResourceParams>

       </Context>

    <Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" type="org.apache.catalina.UserDatabase"/>下的

    <Resource name="jdbc/test" type="javax.sql.DataSource"/>

    同时移去上边的这段:(也可以不移去)<ResourceParams name="jdbc/test">

          <parameter>

            <name>url</name>

            <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb</value>

          </parameter>

          <parameter>

            <name>driverClassName</name>

            <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>

          </parameter>

          <parameter>

            <name>maxWait</name>

            <value>5000</value>

          </parameter>

          <parameter>

            <name>maxActive</name>

            <value>4</value>

          </parameter>

          <parameter>

            <name>password</name>

            <value>jsjrj</value>

          </parameter>

          <parameter>

            <name>maxIdle</name>

            <value>2</value>

          </parameter>

          <parameter>

            <name>username</name>

            <value>sa</value>

          </parameter>

          <parameter> 

            <name>factory</name> 

            <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> 

          </parameter> 

    </ResourceParams>

    注意要在每个WEB应用程序的web.xml文件中都加入

    <resource-ref>
      <description>SqlServer Datasource example</description>
      <res-ref-name>jdbc/SqlServerDB</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
      </resource-ref>

    3.测试

    编写jsp文件:

    <%@ page contentType="text/html;charset=gb2312"%> 

    <%@ page import="java.sql.*"%>

    <%@ page import="javax.sql.*"%>  

    <%@ page import="javax.naming.*"%>  

    <html> 

    <body> 

    <%

     

    Context ctx = new InitialContext();

    Connection conn=null;

              ctx = new InitialContext();

              DataSource ds =(DataSource)ctx.lookup("java:comp/env/jdbc/test");

              conn = ds.getConnection();

    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); 

    String sql="select * from T_Student"; 

    ResultSet rs=stmt.executeQuery(sql); 

    while(rs.next()) {%>

    <% 

    out.print(rs.getString(1));

    out.print(rs.getString(2));

    out.print(rs.getString(3));

    }%> 

    <% 

    out.print("数据库操作成功,恭喜你");

    rs.close(); 

    stmt.close(); 

    conn.close(); 

    %> 

    </body> 

    </html>
  • 相关阅读:
    显示所有销售订单
    从 “香农熵” 到 “告警降噪” ,如何提升告警精度?
    KubeDL 0.4.0 Kubernetes AI 模型版本管理与追踪
    链路分析 K.O “五大经典问题”
    让容器跑得更快:CPU Burst 技术实践
    All in one:如何搭建端到端可观测体系
    【视频特辑】提效神器!如何用Quick BI高效配置员工的用数权限
    一文说清linux system load
    Flow vs Jenkins 实操对比,如何将Java应用快速发布至ECS
    实时数仓Hologres首次走进阿里淘特双11
  • 原文地址:https://www.cnblogs.com/ami/p/455723.html
Copyright © 2011-2022 走看看