🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.lang.java
Article #20499

[ת��] ���Tomcat��DBCP

#20499
From: ������ǿ��
Date: Wed, 17 Dec 2003 13:54
209 lines
8922 bytes
�� ��������ת���� OpenSource ������ ��
�� ԭ���� hijack ��� ��
�ṹ��

                              ���
                     +-----------------------+   DataSource   JNDI      
                     |   Tomcat<=====>DBCP---|------��-------> ��----------> 
                     +-----------------------+         binding      binding       
                                   /\
                                   ||
                                   ||
                                DataBase

========= ���Tomcat��DBCP(������ݿ���MySQL)

<>����Ҫ��jars
  1.Jakarta-Commons DBCP 1.0 
  2.Jakarta-Commons Collections 2.0 
  3.Jakarta-Commons Pool 1.0
  4.mysql-connector-java-3.0.9-stable-bin.jar(MySQL��)
 
<>��ϲ��裺
  1.��������4��jars copy��$CATALINA_HOME/common/lib/��(ע�⣺Tomcatֻʶ���׺Ϊ.jar�ġ�����.zip��Ҫ�ĺ�׺)
  2.�޸�$CATALINA_HOME/conf/server.xml��<Context></Context>֮������ݣ�

    ---------------------------------------------------------------------------------------------------------
    
    <!-- ����webapp����ʼλ�� -->
    <Context path="/DBTest" docBase="DBTest"
            debug="5" reloadable="true" crossContext="true">
      
      <!-- ����log��¼ -->
      <Logger className="org.apache.catalina.logger.FileLogger"
                 prefix="localhost_DBTest_log." suffix=".txt"
                 timestamp="true"/>
                 
      <!-- ����JNDI���� -->
      <!-- Resource��(�����ӳص�DataSource����)��3������name��auth��type.
           name����JNDI����ƶ���,����ͨ��JNDI�����ҵ��˶���,����ȡ��jdbc/TestDB;
           auth����ӳع���Ȩ���ԣ�����ȡֵContainer,����Ϊ��������;
           type���������ͣ�����ȡֵjavax.sql.DataSource������Ϊ��ݿ����ӳء�
      -->
      <Resource name="jdbc/TestDB"
                   auth="Container"
                   type="javax.sql.DataSource"/>
      
      
      <!-- ResourceParams����������ĸ�����user��password��driverClassName��driverName.
           ����Ϊ��ݿ���û������롢JDBC�����ݿ��ַ
       -->
      <ResourceParams name="jdbc/TestDB">
        <parameter>
          <name>factory</name>
          <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
        </parameter>
    
        <!-- maxActive����󼤻�����������ȡֵΪ100,
             ��ʾͬʱ�����20����ݿ�����. �������Ϊ0,���ʾû�и�����.
         -->
        <parameter>
          <name>maxActive</name>
          <value>100</value>
        </parameter>
    
        <!-- maxIdle�����Ŀ���������,����ȡֵΪ30,
             ��ʾ��ʹû����ݿ�����ʱ��Ȼ���Ա���20���е�����,
             �������ʱ���ڴ���״̬.�������Ϊ0,���ʾû�и�����.
          -->
        <parameter>
          <name>maxIdle</name>
          <value>30</value>
        </parameter>
    
        <!-- MaxWait�����ȴ�������,ֱ����ʱΪֹ,
             ȡֵ10000,��ʾ10���ʱ.ȡֵ-1����ʾ���޵ȴ�.
          -->
        <parameter>
          <name>maxWait</name>
          <value>10000</value>
        </parameter>
    
        <!-- MySQL dB username and password for dB connections  -->
        <parameter>
         <name>username</name>
         <value>javauser</value>
        </parameter>
        <parameter>
         <name>password</name>
         <value>javadude</value>
        </parameter>
    
        <!-- Class name for connector/j JDBC driver -->
        <parameter>
           <name>driverClassName</name>
           <value>com.mysql.jdbc.Driver</value>
        </parameter>
    
        <!-- The JDBC connection url for connecting to your MySQL dB.
             The autoReconnect=true argument to the url makes sure that the
             mm.mysql JDBC Driver will automatically reconnect if mysqld closed the
             connection.  mysqld by default closes idle connections after 8 hours.
             -->
        <parameter>
          <name>url</name>
          <value>jdbc:mysql://localhost:3306/javatest?autoReconnect=true</value>
        </parameter>
      </ResourceParams>
    </Context>

    [�ر�ע��ģ���copy����������ļ�����ΪTomcat���xml�������ܶ�����֧�ֲ���]
    
 3. ��д���ó����web.xml
    ��WEB-INF��newһ��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>MySQL 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>
  
 4. ���Դ��룺
    test.jsp
    -------------------------------------------------------------------------------------
    <html>
      <head>
        <title>DB Test</title>
      </head>
      <body>
    
      <%
        foo.DBTest tst = new foo.DBTest();
        tst.init();
      %>
    
      <h2>Results</h2>
        Foo <%= tst.getFoo() %><br/>
        Bar <%= tst.getBar() %>
    
      </body>
    </html>
    -------------------------------------------------------------------------------------
    
    foo.DBTest.java
    -------------------------------------------------------------------------------------
    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 id, foo, bar from testdata");
                if(rst.next()) {
                   foo=rst.getString(2);
                   bar=rst.getInt(3);
                }
                conn.close();
            }
          }
        }catch(Exception e) {
          e.printStackTrace();
        }
     }
    
     public String getFoo() { return foo; }
     public int getBar() { return bar;}
    }
    ----------------------------------------------------------------------------------------------

--
<signatures>

    2003-8~2003-10 Ŭ��ȥ�ƹ�AspectJ
    2003-9~2003-11 Ŭ��ȥ�ƹ�JDO
    ����ȥŬ��

�� ��Դ:��Ʈ��ˮ�Ƽ� Freecity.dhs.org��[FROM: hijack]
--
�� ת��:��Ʈ��ˮ�Ƽ� Freecity.dhs.org��[FROM: hijack]
Technical Details
Message-ID: <49gEAl$ACN@Freecity.dhs.org>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!news2.google.com!fu-berlin.de!in.100proofnews.com!in.100proofnews.com!prodigy.com!prodigy.com!rip!sjc70.webusenet.com!news.webusenet.com!news.bylinux.net!news.ccie.net.cn!Freecity

Show Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB
X-Google-Thread: f6cb0,783344b315364a1e,start
X-Google-Attributes: gidf6cb0,public
X-Google-ArrivalTime: 2003-12-17 05:51:51 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!news2.google.com!fu-berlin.de!in.100proofnews.com!in.100proofnews.com!prodigy.com!prodigy.com!rip!sjc70.webusenet.com!news.webusenet.com!news.bylinux.net!news.ccie.net.cn!Freecity
From: hijack.bbs@Freecity.dhs.org (������ǿ��)
Newsgroups: cn.bbs.comp.lang.java
Subject: [ת��] ���Tomcat��DBCP
Date: 17 Dec 2003 13:54:23 GMT
Organization: Ʈ��ˮ�Ƽ�
Message-ID: <49gEAl$ACN@Freecity.dhs.org>
Mime-Version: 1.0
Content-Type: text/plain; charset="gb2312"
Content-Transfer-Encoding: 8bit
X-Filename: Java/M.1071669263.A
Lines: 209