Tomcat配置连接池
Tomcat配置DBCP连接池
配置tomcat服务器的时候,使用到jndi;通过Context配置文件实现配置池对象,通过new initialConext()对象的lookup()获取到数据池对象,在通过ds获取connction对象
我们在Java Web环境中使用DataSource时,通常不是自己去创建,而是通过在Tomcat中配置JNDI资源来完成。
JNDI(Java Naming and Directory Interface),Java命名和目录接口。JNDI的作用就是:在服务器上配置资源,然后通过统一的方式来获取配置的资源。
还记得在哪里可以写<Context>么?
l conf\server.xml中,在<Host>元素中添加<Context>;
l 还可以在conf\catalina\localhost目录下创建一个xml文件,也可以添加<Context>;
l 还有conf\Context.xml文件中也可以添加<Context>;
l 也可以在你的项目的META-INF目录下创建context.xml文件,在这个文件中添加<Context>元素!但这种方式与第2种是相同的!当你启动Tomcat时,Tomcat会自动把context.xml文件copy到conf\catalina\localhost目录下,并且用当前项目来重命名文件。
<Context> <Resource name="itcast[崔1] " type="org.apache.tomcat.dbcp.dbcp.BasicDataSource"[崔2] factory="org.apache.naming.factory.BeanFactory"[崔3] username="root" password="123" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1/mydb1" maxIdle="3" maxWait="5000" maxActive="5" initialSize="3"/> </Context> |
配置好了资源后,就可以在当前项目中使用如下代码来获取资源了。
Context cxt = new InitialContext(); [崔4] DataSource ds = (DataSource)cxt.lookup("java:/comp/env/itcast[崔5] "); Connection con = ds.getConnection(); System.out.println(con); con.close(); |
<Context>表示一个项目!在当前项目中都可以查找资源,但是如果没有启动Tomcat那么肯定是查找不到的。
注意,在Tomcat中配置连接池时,说明这是由Tomcat来创建连接池对象,而连接池对象会去创建Connection!但是,Connection是由驱动实现的,这说明你需要向Tomcat提供MySQL的驱动Jar包!你必须把Jar放到Tomcat安装目录\lib目录下。
还有DBCP连接池的Jar包,你也要放到Tomcat安装目录\lib目录下!但是你可能已经发现了,在Tomcat安装目录\lib目录下已经存在了tomcat-dbcp.jar。这说明Tomcat自带了dbcp的jar包!但是这个Jar包中的BasicDataSource类的包名为:org.apache.tomcat.dbcp.dbcp.BasicDataSource,而不在是org.apache.common.dbcp.BasicDataSource了。
其实Tomcat还允许你使用默认配置的方式,这种方式默认使用的就是DBCP连接池!
<Context> <Resource name="itcast[崔6] " type="javax.sql.DataSource"[崔7] username="root" password="123" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1/mydb1" maxIdle="3" maxWait="5000" maxActive="5" initialSize="3"/> </Context> |
2 Tomcat配置C3P0连接池
其实配置的方法都是一样的,不过这里还是再给出一个模板吧,方便大家以后使用。
<Context> <Resource name="itcast" type="com.mchange.v2.c3p0.ComboPooledDataSource"[崔8] factory="org.apache.naming.factory.BeanFactory"[崔9] user="root" password="123" classDriver="com.mysql.jdbc.Driver" jdbcUrl="jdbc:mysql://127.0.0.1/mydb1" maxPoolSize="20" minPoolSize ="5" initialPoolSize="10" acquireIncrement="2"/> </Context> |
注意,必须把c3p0相关jar包放到Tomcat安装目录\lib目录下。当然,还有mysql驱动jar包也不要忘了。
其实,你也可以自己写一个连接池,也可以配置到Tomcat中,然后通过JNDI去查找。
资源的名称!在获取资源时需要使用这个名称。
资源的类型
Tomcat服务器提供的,用来加载资源的Bean工厂!
创建JNDI上下文!在Tomcat启动后,Tomcat会向系统属性中添加相关配置信息,而InitialContext类会在系统属性中查找相关的配置信息!
要查找的资源的名称,其中Java:/comp/env/是前缀,这是固定的,而后面的itcast是我们配置的资源的名字
资源的名称!在获取资源时需要使用这个名称。
只给出DataSource,而没有给出实现类,这时Tomcat会直接使用DBCP的BasicDataSource。而且这时连factory属性都不用再给出。
类型指定为ComboPooledDataSource
工厂不能省略
Tomcat配置连接池的更多相关文章
- Tomcat 配置连接池
1. Tomcat 配置 JNDI 资源 JNDI(Java Naming and Directory Interface), Java 命名和目录接口; JNDI 作用: 在服务器上配置资源, 然后 ...
- Tomcat配置连接池的java实现
1.准备 JNDI(Java Naming and Directory Interface),Java命名和目录接口.JNDI的作用就是:在服务器上配置资源,然后通过统一的方式来获取配置的资源.我们这 ...
- Tomcat上配置连接池{ connect error=Name [jdbc/OracleDB] is not bound in this Context. Unable to find [jdbc]}
. 在学习期间,从未实践过在tomcat上配置连接池,今天终于实现一次,在tomcat玩了一把,不知道你是否现在有和我一样的困境.废话少说直接上代码 java public static Con ...
- Tomcat+Oracle配置连接池的例子
我这有一个Tomcat+Oracle连接池的例子,放上来和大家分享一下. Tomcat +Oracle 连接池配置 Author: Kenneth.Leaf@GalaxySoft Date: / ...
- 转!数据库连接池概念、种类、配置(DBCP\C3P0\JndI与Tomact配置连接池)
数据库连接池概念.种类.配置(DBCP\C3P0\JndI与Tomact配置连接池) 一.DBCP 连接:DBCP 连接池是 Apache 软件基金组织下的一个开源连接池实现. 需要的 java 包c ...
- spring boot(10)-tomcat jdbc连接池
默认连接池 tomcat jdbc是从tomcat7开始推出的一个连接池,相比老的dbcp连接池要优秀很多.spring boot将tomcat jdbc作为默认的连接池,只要在pom.xml中引入了 ...
- TOMCAT配置数据库连接池
迁移时间--2017年7月9日15:27:02Author:Marydon TOMCAT配置数据库连接池 说明: a.数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数 ...
- Spring boot (12) tomcat jdbc连接池
默认连接池 tomcat jdbc是从tomcat7开始推出的一个连接池,相比老的dbcp连接池要优秀很多,spring boot将tomcat jdbc作为默认的连接池,只要在pom.xml中引入了 ...
- JBoss配置连接池
什么是数据库连接池? 配置连接池为的是解决效率问题.由于每创建一个连接都是非常耗时的,有了连接池,就能够提前放一些连接进去.以后我们再用连接就去连接池里面取而不是每次都创建.可是我们知道连接池是有上限 ...
随机推荐
- python学习笔记十三:Flask demo
一.Flask简介 Flask 是一个 Python 实现的 Web 开发微框架.官网:http://flask.pocoo.org/ 二.Demo 1.代码结构 . ├── blog.py ├── ...
- JAVA中的类
节选自:http://www.cnblogs.com/dolphin0520/p/3811445.html 1. 成员内部类是依附外部类而存在的,也就是说,如果要创建成员内部类的对象,前提是必须存在一 ...
- SpringMVC 集成 Freemarker 模板引擎
本文通过 maven 项目中集成 1.引入 SpringMVC 与 Freemarker 需要的依赖 <!-- SpringMVC --> <dependency> <g ...
- 常用模块(time)
import time # data = time.time() # 获取时间戳# data = time.localtime() # 获取操作系统时间,也称本地时间,可传入时间戳# data = t ...
- 一个初学者的辛酸路程-前端cs
一.主要内容 继续CSS 二.CSS 第一个: postion 网页有一类就是返回顶部,一直在右下角,还有打开一个网页顶部有个菜单,滚动滑轮,顶部永远在上面. position: fiexd == ...
- Opencv3.0.0安装包
这个资源是Opencv3.0.0安装包,包括Windows软件包,Android软件包,IOS软件包,还有opencv的源代码:需要的下载吧. 点击下载
- ES原理(转载)
该博客属于转载,是很经典的一篇关于ES的介绍: Elasticsearch 是一个兼有搜索引擎和NoSQL数据库功能的开源系统,基于Java/Lucene构建,可以用于全文搜索,结构化搜索以及近实时分 ...
- 构建Docker镜像两种方式的比较-Dockerfile方式和S2I方式
前言 写Dockerfile是构建Docker镜像最通常的方式,接触过Docker的童鞋多少了解一些.前段时间研究OpenShift(paas的一种),发现了另外一种构建Docker镜像的方式:S2I ...
- Ext中关于Ext.QuickTips.init()的使用
在extJS的例子中,大部分都在程序第一行使用了如下语句:Ext.QuickTips.init();但是QuickTips的用处是什么呢?我们看一段最简单的代码: <html> <h ...
- ACM基础算法入门及题目列表
对于刚进入大学的计算机类同学来说,算法与程序设计竞赛算是不错的选择,因为我们每天都在解决问题,锻炼着解决问题的能力. 这里以TZOJ题目为例,如果为其他平台题目我会标注出来,同时我的主页也欢迎大家去访 ...