以往Tomcat5.0的连接池配置是在http://localhost:8080/admin/ 下 进行的非常方便,可是5.0以后的版本里面Tomcat就没有把admin集成到程序中了。Tomcat5.5的admin可以在apache官方网站上 下到,也可以通过admin里面的提示信息进行配置,可是Tomcat6.0他的admin是下不到的,好像是没有,这个时候配置连接池就必须手动配置 了。网上有很多配置方法,可是说的都不是很详细,而且一般都是在server.xml里面配置,在这里我就系统的说一下在context.xml里面配置 Tomcat6.0连接池的方法。
首先打开Tomcat6.0目录下的conf文件夹然后打开context.xml文件,在里面添加
<Resource name="jdbc/EmployeeDB" auth="Container" type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/bbs"
username="root" password="root" maxActive="100" maxIdle="30"
maxWait="1000" />
下面对里面几个比较重要的参数进行一下说明:
name:表示你的连接池的名称也就是你要访问连接池的地址
auth:是连接池管理权属性,Container表示容器管理
type:是对象的类型
driverClassName:是数据库驱动的名称
url:是数据库的地址
username:是登陆数据库的用户名
password:是登陆数据库的密码
maxIdle,最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连
接将被标记为不可用,然后被释放。设为0表示无限制。
MaxActive,连接池的最大数据库连接数。设为0表示无限制。
maxWait ,最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示
无限制。
*maxActive:最大连接数据库连接数,设 0 为没有限制
*maxIdle:最大等待连接中的数量,设 0 为没有限制
*maxWait:最大等待毫秒数, 单位为 ms, 超过时间会出错误信息
一般把maxActive设置成可能的并发量就行了
maxActive、maxIdle和maxWait参数:
maxActive是最大激活连接数,这里取值为20,表示同时最多有20个数据库连
接。maxIdle是最大的空闲连接数,这里取值为20,表示即使没有数据库连接时依然可以保持20空闲的
连接,而不被清除,随时处于待命状态。MaxWait是最大等待秒钟数,这里取值-1,表示无限等待,直到
超时为止,也可取值9000,表示9秒后超时。
maxWait=5000
maxActive=50
maxIdle=5
到这里Tomcat6.0的连接池就配置成功了!
Tomcat下JNDI的配置与调用(以oracle为例)
在 开发J2EE系统是,很多情况下都需要采用数据库来支持数据的存储,在java里JNDI提供很好的目录服务,尤其是tomcat里自带的伪JNDI,我 们可以利用这个,配合系统的设计,能够很好地做到一个系统支持多种数据库的架构,本文主要介绍tomcat下的JNDI的配置和使用例子,以Oracle 数据库为例。
1、 配置Tomcat的Server.xml文件
寻找</Host>字样,在</Host>字样前加入下列配置信息。将ojdbc14.jar文件拷入%TOMCAT_HOME%/common/lib目录中,重新启动Tomcat。
<DefaultContext>
<!-- below is the JNDI data resource -->
<Resource name="jdbc/数据名" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/数据名">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.OracleDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@192.168.1.64:1521:Oracle的SID</value>
</parameter>
<parameter>
<name>username</name>
<value>用户名</value>
</parameter>
<parameter>
<name>password</name>
<value>密码</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>50</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
</ResourceParams>
<!-- end of JNDI resource -->
</DefaultContext>
2、 配置web程序的web.xml文件
在web.xml文件的web-app节点下添加如下节点元素
<resource-ref>
<res-ref-name>jdbc/数据名</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
3、 调用实例
public class DataManage {
private static DataSource ds = null;
static {
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
ds = (DataSource) envCtx.lookup("jdbc/eCampus");
} catch (NamingException e) {
System.out.println("无法获得JNDI数据源");
}
}
/**
* 用于获得一个默认的数据库链接
* @return Connection
*/
public static Connection getConnection() {
Connection conn = null;
try {
conn = ds.getConnection();
} catch (SQLException e) {
System.out.println("无法获得数据库链接");
}
return conn;
}
}
若直接采用JNDI则可以采用如下代码
Connection conn = null;
try {
Class.forName("oracle.jdbc.OracleDriver");
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@192.168.1.64:1521:radius", "edu",
"edu");
} catch (ClassNotFoundException e) {
System.out.println("我没有找到数据库驱动器");
} catch (SQLException e) {
System.out.println("无法和数据库建立链接");
}
return conn;
4、 需要注意的地方
在部署时,需要把数据库相应的驱动放在tomcat的common目录的lib下。