1、准备

  JNDI(Java Naming and Directory Interface),Java命名和目录接口。JNDI的作用就是:在服务器上配置资源,然后通过统一的方式来获取配置的资源。我们这里要配置的资源是连接池,所以项目中就可以通过统一的方式来获取连接池对象。

  • 新建一个java web项目,导入jar包
    • commons-dbcp-1.4.jar
    • commons-pool-1.3.jar
    • 数据库驱动包,如:mysql-connector-java-5.1.28-bin.jar

2、配置文件

  • 在%CATALINA_HOME%\conf\Catalina\localhost目录下创建与项目名同名的xml文件

  c3p0配置

<Context>
<Resource name="myc3p0"
type="com.mchange.v2.c3p0.ComboPooledDataSource"
factory="org.apache.naming.factory.BeanFactory"
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>

配置JNDI资源需要到<Context>元素中配置<Resource>子元素:

  l  name:指定资源的名称,这个名称可以随便给,在获取资源时需要这个名称;

  l  factory:用来创建资源的工厂,这个值基本上是固定的,不用修改;

  l  type:资源的类型,我们要给出的类型当然是我们连接池的类型了;

  l  bar:表示资源的属性,如果资源存在名为bar的属性,那么就配置bar的值。对于DBCP连接池而言,你需要配置的不是bar,因为它没有bar这个属性,而是应该去配置url、username等属性。

 dbcp配置

<Context>
<Resource name="mydbcp"
type="org.apache.tomcat.dbcp.dbcp.BasicDataSource"
factory="org.apache.naming.factory.BeanFactory"
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>

3、获取资源

  配置资源的目的当然是为了获取资源了。只要你启动了Tomcat,那么就可以在项目中任何类中通过JNDI获取资源的方式来获取资源了。

import java.io.IOException;
import java.sql.Connection; import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource; /**
* 获取JNDI的资源
*
*/
public class AServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*
* 1. 创建JNDI的上下文对象
*/
try { Context cxt = new InitialContext();
// 2查询出入口
// Context envContext = (Context)cxt.lookup("java:comp/env");
// 3. 再进行二次查询,找到我们的资源
// 使用的是名称与<Resource>元素的name对应
// DataSource dataSource = (DataSource)envContext.lookup("jdbc/dataSource"); DataSource dataSource = (DataSource)cxt.lookup("java:comp/env/jdbc/dataSource"); Connection con = dataSource.getConnection();
System.out.println(con);
con.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}

获取资源:

  l  Context:javax.naming.Context;

  l  InitialContext:javax.naming.InitialContext;

  l  lookup(String):获取资源的方法,其中”java:comp/env”是资源的入口(这是固定的名称),获取过来的还是一个Context,这说明需要在获取到的Context上进一步进行获取。”bean/MyBeanFactory”对应<Resource>中配置的name值,这回获取的就是资源对象了。

Tomcat配置连接池的java实现的更多相关文章

  1. Tomcat 配置连接池

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

  2. Tomcat配置连接池

    Tomcat配置DBCP连接池 配置tomcat服务器的时候,使用到jndi;通过Context配置文件实现配置池对象,通过new initialConext()对象的lookup()获取到数据池对象 ...

  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. Spring boot (12) tomcat jdbc连接池

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

  8. JBoss配置连接池

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

  9. Spring配置连接池

    ---------------------siwuxie095                                 Spring 配置连接池         1.Spring 配置内置连接 ...

随机推荐

  1. WinForm Column cannot be added because its CellType property is null.

    在Winform  DatatGridView 控件中绑定了一个模型的属性,结果在生成窗口时,发生错误,异常信息如下 : Column cannot be added because its Cell ...

  2. mysqli扩展库---------预处理技术

    1, PHP程序与mysql之间处理sql语句流程如下,减少执行时间方式有三种: ① 减少php发送sql次数: ② 减少php与mysql之间网络传输时间: ③ 减少mysql的编译时间: 2, 预 ...

  3. 案例2-tomcat自启动脚本

    适用于ubuntu,centos 涉及知识点 1. 函数 2. case语句 #!/bin/bash #chkconfig: #description:Tomcat service #pidfile: ...

  4. easyui里面的API=====》 load

    在easyui里面有个API load,这个API实用性质很强,可以直接帮我加载页面的数据到想需要的相应输入框里面,但是也要注意,这些将要被填入数据的输入框里面的属性有个要求:其中输入框里面的name ...

  5. CH5101 LCIS

    CH5101 LCIS 题意: 求两个长度不超过3000的序列的最长公共上升子序列 思路: 朴素解法:用f[i,j]表示a1~ai与b1~bj可以构成的以bj为结尾的LCIS的长度,三重循环求解: ; ...

  6. django执行过程

  7. (STM32F4) IAP程式碼實現

    IAP學習, 主要想了解實際上程式碼放在不同的Flash位置如何轉跳且執行. 我的應用程序只做了Pin12, Pin13 LED閃爍來分辨我的 App1 跟 App2的程式碼 App1 程式碼 int ...

  8. PHP类库生成pdf代码实例

    require_once('./tcpdf/tcpdf.php'); //引入库文件        $pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', f ...

  9. Navigator导航器

    import React, { Component } from 'react';import { Platform, StyleSheet, Text, View, Navigator, Touch ...

  10. Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名

    Oracle数据库,用mybatic批量插入数据: <insert id="saveBatch" parameterType="io.renren.entity.N ...