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配置连接池的更多相关文章

  1. Tomcat 配置连接池

    1. Tomcat 配置 JNDI 资源 JNDI(Java Naming and Directory Interface), Java 命名和目录接口; JNDI 作用: 在服务器上配置资源, 然后 ...

  2. Tomcat配置连接池的java实现

    1.准备 JNDI(Java Naming and Directory Interface),Java命名和目录接口.JNDI的作用就是:在服务器上配置资源,然后通过统一的方式来获取配置的资源.我们这 ...

  3. Tomcat上配置连接池{ connect error=Name [jdbc/OracleDB] is not bound in this Context. Unable to find [jdbc]}

    . 在学习期间,从未实践过在tomcat上配置连接池,今天终于实现一次,在tomcat玩了一把,不知道你是否现在有和我一样的困境.废话少说直接上代码   java  public static Con ...

  4. Tomcat+Oracle配置连接池的例子

    我这有一个Tomcat+Oracle连接池的例子,放上来和大家分享一下. Tomcat +Oracle  连接池配置   Author: Kenneth.Leaf@GalaxySoft Date: / ...

  5. 转!数据库连接池概念、种类、配置(DBCP\C3P0\JndI与Tomact配置连接池)

    数据库连接池概念.种类.配置(DBCP\C3P0\JndI与Tomact配置连接池) 一.DBCP 连接:DBCP 连接池是 Apache 软件基金组织下的一个开源连接池实现. 需要的 java 包c ...

  6. spring boot(10)-tomcat jdbc连接池

    默认连接池 tomcat jdbc是从tomcat7开始推出的一个连接池,相比老的dbcp连接池要优秀很多.spring boot将tomcat jdbc作为默认的连接池,只要在pom.xml中引入了 ...

  7. TOMCAT配置数据库连接池

      迁移时间--2017年7月9日15:27:02Author:Marydon TOMCAT配置数据库连接池 说明: a.数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数 ...

  8. Spring boot (12) tomcat jdbc连接池

    默认连接池 tomcat jdbc是从tomcat7开始推出的一个连接池,相比老的dbcp连接池要优秀很多,spring boot将tomcat jdbc作为默认的连接池,只要在pom.xml中引入了 ...

  9. JBoss配置连接池

    什么是数据库连接池? 配置连接池为的是解决效率问题.由于每创建一个连接都是非常耗时的,有了连接池,就能够提前放一些连接进去.以后我们再用连接就去连接池里面取而不是每次都创建.可是我们知道连接池是有上限 ...

随机推荐

  1. js常用框架

    JS常用框架:jQuery.Prototype.MooTools 参考:w3cshool jQuery jQuery 是目前最受欢迎的 JavaScript 框架. 它使用 CSS 选择器来访问和操作 ...

  2. 《Cracking the Coding Interview》——第17章:普通题——题目13

    2014-04-29 00:15 题目:将二叉搜索树展开成一个双向链表,要求这个链表仍是有序的,而且不能另外分配对象,就地完成. 解法:Leetcode上也有,递归解法. 代码: // 17.13 F ...

  3. 【java下午茶系列】java三重奏之封装

      java中的封装.继承.多态可谓是踏入这一行业的必经之槛,诸多新人在不明就里的情况下将其各种概念背的是滚瓜烂熟.即便是工作多年之后,也不见得能说出个所以然,或许冥冥之中已经写过无数封装的代码,只是 ...

  4. serial console

    适用于: agent_ipmitool_socat pxe_ipmitool_socat 修改driver方式:更换ironic node的driver类型 yum install -y socat ...

  5. 系统编程--高级IO

    1.非阻塞I/O 非阻塞I/O使我们可以调用不会永远阻塞的I/O操作,例如open,read和write.如果这种操作不能完成,则立即出错返回,表示该操作如继续执行将继续阻塞下去.对于一个给定的描述符 ...

  6. HDU 1532 基础EK Drainage Ditches

    Drainage Ditches Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  7. 块元素包裹img空隙问题

    解决方法 1.img设为block2.img对齐方式vertical-align:bottom(middle/top),不是baseline就行3.父容器font-size:0或line-height ...

  8. C#实战Microsoft Messaging Queue(MSMQ)消息队列

    前言 在使用MSMQ之前,我们需要自行安装消息队列组件!(具体安装方法大家自己搜一下吧) 采用MSMQ带来的好处是:由于是异步通信,无论是发送方还是接收方都不用等待对方返回成功消息,就可以执行余下的代 ...

  9. Codeforces Round #357 (Div. 2) B

    B. Economy Game time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  10. Codeforces Round #356 (Div. 2) C

    C. Bear and Prime 100 time limit per test 1 second memory limit per test 256 megabytes input standar ...