<parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> <!-- Maximum number of dB connections in pool. Make sure you configure your mysqld max_connections large enough to handle all of your db connections. Set to 0 for no limit. --> <parameter> <name>maxActive</name> <value>100</value> </parameter> <!-- Maximum number of idle dB connections to retain in pool. Set to 0 for no limit. --> <parameter> <name>maxIdle</name> <value>30</value> </parameter> <!-- Maximum time to wait for a dB connection to become available in ms, in this example 10 seconds. An Exception is thrown if this timeout is exceeded. Set to -1 to wait indefinitely. --> <parameter> <name>maxWait</name> <value>10000</value> </parameter>
<!--To configure a DBCP DataSource so that abandoned dB connections are removed and recycled add the following paramater to the ResourceParams configuration for your DBCP DataSource Resource: When available db connections run low DBCP will recover and recyle any abandoned dB connections it finds. The default is false. --> <parameter> <name>removeAbandoned</name> <value>true</value> </parameter>
<!--Use the removeAbandonedTimeout parameter to set the number of seconds a dB connection has been idle before it is considered abandoned. The default timeout for removing abandoned connections is 300 seconds. --> <parameter> <name>removeAbandonedTimeout</name> <value>60</value> </parameter> <!--The logAbandoned parameter can be set to true if you want DBCP to log a stack trace of the code which abandoned the dB connection resources. The default is false. --> <parameter> <name>logAbandoned</name> <value>true</value> </parameter> <!-- MySQL dB username and password for dB connections --> <parameter> <name>username</name> <value>root</value> </parameter>
<parameter> <name>password</name> <value>roger</value> </parameter> <!-- Class name for mm.mysql JDBC driver --> <parameter> <name>driverClassName</name> <value>org.gjt.mm.mysql.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/job?autoReconnect=true</value> </parameter> </ResourceParams> </Context> 6:要将建立的文件夹的名字(folder_name)替换掉第一行(<Context path="/foldername" docBase="foldername" debug="5" reloadable="true" crossContext="true"> <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_foldername_log." suffix=".txt" timestamp="true"/>行)中foldername; 7:同时修改 <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"/>
1:安装好JDK
2:安装好TOMCAT (这篇文章是基于tomcat 4.1.30 版的配置,其它各个版本的配置都是大同小异的。) ,同时下载你要配置的数据库的JDBC驱动程序,放到$Tomcat_Home$/common\lib下面。
3:在tomcat的安装目录下面的webapps下面建一个文件夹,其名字假定为foldername(该文件夹的名字可以任意命名)
4:在刚建的文件夹(foldername)下面再建一个名字为WEB-INF文件夹,这个文件夹的名字是固定的,不能承受意命名,而且文件夹的名字是大写的。
5:在tomcat的安装目录下面有一个conf的文件夹,里面有一个server.xml文件,修改这个文件的同内容。具体修改方法是在这个文件里面的</Context>和</Host>之间加上如下的内容:
<Context path="/foldername" docBase="foldername" debug="5" reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_foldername_log." suffix=".txt" timestamp="true"/>
<Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/mysql">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<!-- Maximum number of dB connections in pool. Make sure you
configure your mysqld max_connections large enough to handle
all of your db connections. Set to 0 for no limit.
-->
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<!-- Maximum number of idle dB connections to retain in pool.
Set to 0 for no limit.
-->
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<!-- Maximum time to wait for a dB connection to become available
in ms, in this example 10 seconds. An Exception is thrown if
this timeout is exceeded. Set to -1 to wait indefinitely.
-->
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
<!--To configure a DBCP DataSource so that abandoned dB connections
are removed and recycled add the following paramater to the
ResourceParams configuration for your DBCP DataSource Resource:
When available db connections run low DBCP will recover and recyle
any abandoned dB connections it finds. The default is false.
-->
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<!--Use the removeAbandonedTimeout parameter to set the number of
seconds a dB connection has been idle before it is considered
abandoned. The default timeout for removing abandoned connections
is 300 seconds.
-->
<parameter>
<name>removeAbandonedTimeout</name>
<value>60</value>
</parameter>
<!--The logAbandoned parameter can be set to true if you want DBCP to
log a stack trace of the code which abandoned the dB connection
resources. The default is false.
-->
<parameter>
<name>logAbandoned</name>
<value>true</value>
</parameter>
<!-- MySQL dB username and password for dB connections -->
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>roger</value>
</parameter>
<!-- Class name for mm.mysql JDBC driver -->
<parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.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/job?autoReconnect=true</value>
</parameter>
</ResourceParams>
</Context>
6:要将建立的文件夹的名字(folder_name)替换掉第一行(<Context path="/foldername" docBase="foldername" debug="5" reloadable="true" crossContext="true"> <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_foldername_log." suffix=".txt" timestamp="true"/>行)中foldername;
7:同时修改 <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"/>
这两行中的值要修改一致,是同一个值。
8:将下载的jdbc驱动程序复制到tomcat下面的common\lib\目录下面,或是将jdbc驱动程序加入到系统的classpath中去。
9:根据不同的数据库的驱动程序,修改此处
<parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value>
</parameter>的<value>属性值。
例如:连接Oracle8/8i/9i数据库(用thin模式)应该修改成如下结果:
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
连接Sql Server7.0/2000数据库应该修改成如下结果:
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
连接DB2数据库应该修改成如下结果:
<name>driverClassName</name>
<value>com.ibm.db2.jdbc.app.DB2Driver</value>
</parameter>
连接Informix数据库应该修改成如下结果:
<name>driverClassName</name>
<value>com.informix.jdbc.IfxDriverr</value>
</parameter>
连接Sybase数据库应该修改成如下结果:
<name>driverClassName</name>
<value>com.sybase.jdbc.SybDriver</value>
</parameter>
连接PostgreSQL数据库应该修改成如下结果:
<name>driverClassName</name>
<value>org.postgresql.Driver</value>
</parameter>
10:根据不同的数据库的路径,修改此处
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/DataBaseName?autoReconnect=true</value>
</parameter>的<value>属性值。
例如是 Oracle8/8i/9i数据库(用thin模式),则应修改为如下结果:
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@localhost:1521:DataBase_SID</value>
</parameter>
Sql Server7.0/2000数据库,则应修改为如下结果:
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs</value>
</parameter>
DB2数据库,则应修改为如下结果:
<parameter>
<name>url</name>
<value>jdbc:db2://localhost:5000/DataBaseName</value>
</parameter>
Informix数据库,则应修改为如下结果:
<parameter>
<name>url</name>
<value>jdbc:informix-sqli://123.45.67.89:1533/DataBaseName:INFORMIXSERVER=myserver</value>
</parameter>
Sybase数据库,则应修改为如下结果:
<parameter>
<name>url</name>
<value>jdbc:sybase:Tds:localhost:5007/DataBaseName</value>
</parameter>
11:在WEB-INF文件夹下面建一个xml文件,其名字为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 DataBase Connection</description>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
根据在server.xml中<ResourceParams name="jdbc/mysql">的命名,将此处<res-ref-name>jdbc/mysql</res-ref-name>的值修改成一样的值。这个文件中其它的地方不需要修改。
2.DBCP,DBCP也是由Jakarta Commons的一个子项目。
推荐时用dbcp第一步:配置server.xml在server.xml文件中找到<!-- Tomcat Root Context -->
<!--
<Context path="" docBase="ROOT"
debug="0"/>
-->
将其改为<!-- Tomcat Root Context -->
<Context path="" docBase="ROOT" debug="0">
<Resource name="jdbc/OracleDB" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/OracleDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@192.168.0.50:1521:oradb</value>
</parameter>
<parameter>
<name>username</name>
<value>holen</value>
</parameter>
<parameter>
<name>password</name>
<value>holen</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>
说明:从配置文件可以看出,DBCP的配置与Tyrex类似,但功能更加丰富。相同就不多说,重点讲述不同的地方。 factory参数:<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
即基础对象工厂,这里取值org.apache.commons.dbcp.BasicDataSourceFactory,即DBCP自带的工厂,也可以用别的。需说明一点是,虽然4.1.18里主推DBCP作连接池,但仍然可以使用Tyrex作为连接池,而且此时的Tyrex已从0.9.7.0升级到了1.0,支持JTA/JCA对象等,对象的获取仍然是通过JNDI,具体的配置方法可以参见Tomcat文档。url参数:<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@192.168.0.50:1521:oradb</value>
url是数据库访问地址,在前提已提到。接下来有三个参数,均为连接数相关,如下:<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
maxActive是最大激活连接数,这里取值20个,表示同时最多有20个与数据库的连接。maxIdle是最大空闲连接数,这里取值10个,表示即使没有连接请求时,依然可以保持10空闲的连接,而不被清除,随时处于待命状态。关于对象的状态,有兴趣的朋友可以看看EJB方面的资料。maxWait是最大等待秒钟数,这里取值-1,表示无限等待,直到超时为止,也可以取值9000,即表示9秒后超时。关于maxActive与maxIdle的一点建议,对于企业级应用,其两者的值一般比较接近,或者相同,关键是要分析应用的大小。第二步:配置web.xml打开webapps/ROOT/WEB-INF下web.xml,加入如下内容: <resource-ref>
<description>Oracle
Datasource example</description>
<res-ref-name>jdbc/OracleDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
说明:此步可以省略,即不配置web.xml也可以使用连接池,但正式项目应用时还是建议加上。第三步:将Oracle的JDBC驱动classes12.jar拷贝到Tomcat安装目录的common/lib下。
[email protected]