Article View: cn.bbs.comp.lang.java
Article #20499[ת��] ���Tomcat��DBCP
From: ������ǿ��
Date: Wed, 17 Dec 2003 13:54
Date: Wed, 17 Dec 2003 13:54
209 lines
8922 bytes
8922 bytes
[1;37m�� ��������ת���� [32mOpenSource [37m������ ��
�� ԭ����[32m hijack[37m ��� ��[m
�ṹ��
���
+-----------------------+ 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
����ȥŬ��
[m[1;32m�� ��Դ:��Ʈ��ˮ�Ƽ� Freecity.dhs.org��[FROM: hijack][m
--
[m[1;32m�� ת��:��Ʈ��ˮ�Ƽ� Freecity.dhs.org��[FROM: hijack][m
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!FreecityShow 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