tomcat7.0 mysql_Eclipse+Tomcat7.0+MySQL 连接池设置

工程名:JavaWeb

第一步:配置server.xml

在Tomcat的server.xml文件中之前添加如下配置信息:

各属性的含义如下:

(1)path:web应用的context路径。catalina将每个URL的起始和context path进行比较,选择合适的web应用处理该请求。特定Host下的context path必须是惟一的。如果context path为空字符串(""),这个context是所属Host的缺省web应用,用来处理不能匹配任何context path的请求。

(2)docBase:该web应用的文档基准目录(Document Base,也称为Context Root),或者是WAR文件的路径。可以使用绝对路径,也可以使用相对于context所属的Host的appBase路径。

(3)debug:与这个Engine关联的Logger记录的调试信息的详细程度。数字越大,输出越详细。如果没有指定,缺省为0。

(4)reloadable:如果希望Catalina监视/WEB-INF/classes/和/WEB-INF/lib下面的类是否发生变化,在发生变化的时候自动重载web application,设为true。这个特征在开发阶段很有用,但也大大增加了服务器的开销。因此,在发布以后,不推荐使用。但是,你可以使用 Manager应用在必要的时候触发应用的重载。

(5)crossContext:如果想在应用内调用ServletContext.getContext()来返回在该虚拟主机上运行的其他web application的request dispatcher,设为true。在安全性很重要的环境中,设为false,使得getContext()总是返回null。缺省值为false。

(6)source:还没弄清楚是什么作用。

各属性的含义如下:

(1)name:指定Resource的JNDI名字。

(2)auth:指定管理Resource的Manager,它有两个可选值:Container和Application。Container表示由容器来创建和管理Resource,Application表示由web应用来创建和管理Resource。

(3)type:指定Resource的Java类名。

(4)maxActive: 池中连接的最大数目。要确保让 MySQL 的最大连接数大于这个值。如果其值为 0,则没有最大数量限制。

(5)maxIdle:池中最大空闲数据库连接数。如果其值为-1,则没有限制。(6)maxWait:等待一个连接变成可用的最长时间,单位是 ms。这个例子中该值为 10 s,如果超时将抛出异常。如果设置为-1,将无限等待。

(7)username 和 password:连接 MySQL 数据库的用户名和口令。

(8)driverClassName:MySQL 数据库的 JDBC 驱动程序的名字,这里的名字是'com.mysql.jdbc.Driver'。

(9)url:JDBC 连接 MySQL 数据库的 url。其中'127.0.0.1'是要连接的数据库服务器的ip,'3306'是数据库服务器端口,'test'是数据库名。参数 autoReconnect=true 确保连接池能够重新连接。如果 8 个小时没有操作,MySQL 管理器会关闭连接。

第二步:配置WEB-INF/lib/web.xml文件

如果web应用访问了有Servlet容器管理的某个JNDI资源,那么必须在web.xml文件中声明对这个JNDI资源的引用。表示资源引用的元素为,以下是声明引用jdbc/BookDB数据源的代码:

DB Connection  jdbc/DBCP

javax.sql.DataSource  Container

属性说明:

1)description:对所引用的资源的说明。

2)res-ref-name:指定所引用资源的JNDI名字,与元素中的name属性对应。

3)res-type:指定所引用资源的类名,与元素中的type属性对应。

4)res-auth:指定管理所引用资源的Manager,与元素中的auth属性对应。

第三步:Java调用

1 //连接池

2 try{3 Context initContext = newInitialContext();4 Context envContext = (Context)initContext.lookup("java:/comp/env");5 DataSource ds = (DataSource)envContext.lookup("jdbc/DBCP");6 Connection connect =ds.getConnection();7 System.out.println("Success connect Mysql server (DBCP)!");8 res=true;9 } catch(Exception e) {10 System.out.print("error connect Mysql server(DBCP)!");11 e.printStackTrace();12 }

其中第4行中lookup()的参数我是直接复制的,没有修改,还不懂是什么意思。

第5行中lookup()的参数是前两步中设置的JNDI名字。

在程序中遇到了错误:org.apache.tomcat.dbcp.dbcp.BasicDataSource cannot be cast to org.apache.tomcat.jdbc.pool.DataSource

经查是引入的包不对。本项目中正确的包是

1 importjavax.naming.Context;2 importjavax.naming.InitialContext;3 //import org.apache.tomcat.jdbc.pool.DataSource;

5 import javax.sql.DataSource;

比较发现“javax.sql.DataSource”就是第一步中 的type属性,也是第二步中的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值