数据库连接池--Tomcat内置实现

1.JNDI(Java Naming and Directory Interface,Java命名和目录接口)

  是一组在Java应用中访问命名和目录服务的API。命名服务将名称和对象联系起来,使得我们可以用名称访问对象。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性。可以理解为一个容器,可以在其中存放任意内容,在容器中为内容提供一个字符串名称,名称命名方式采用是目录结构方式,在其他地方引用该名称就可以得到该内容.

2.实现

  思想:将数据库连接池作为服务器端的资源存放在JNDI容器中,使用时从容器中取出资源,即数据库连接池.

  a)将对象存在在JNDI容器

    在Web工程的WebRoot\META-INF\目录下创建Context.xml文件,将对象作为资源存放入容器中,也可以被其他Web项目所访问.

      

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <!-- #1 给tomcat 配置对象,将内容添加jndi容器 -->
  <Resource name="jdbc/pool" auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               username="root" password="1234" driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/day17"/>
</Context>

  b)当前web项目从tomcat jndi容器将需要对象进行引用。

    在当前项目\WebRoot\WEB-INF路径下的web.xml文件中添加如下代码

<!-- #2 从jndi容器引用已经存在对象 -->
    <resource-ref>
      <res-ref-name>jdbc/pool</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>

  c)jsp 或 java代码 使用

<%@page import="java.sql.Connection"%>
<%@page import="javax.sql.DataSource"%>
<%@page import="javax.naming.InitialContext"%>
<%@page import="javax.naming.Context"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
    <%--查询数据 --%>
    <sql:query var="rs" dataSource="jdbc/pool">
        select * from t_user
    </sql:query>
</head>
<body>
    <c:forEach items="${rs.rows}" var="row">
        ${row.id}
        ${row.username}
        ${row.password}
    </c:forEach>
    <%
        //1初始化jndi容器,包:javax.naming
        Context initContext = new InitialContext();
        //2初始java环境
        Context envContext  = (Context)initContext.lookup("java:/comp/env");
        //3获得自定义内容
        DataSource ds = (DataSource)envContext.lookup("jdbc/pool");
        Connection conn = ds.getConnection();
        out.print(conn);
    %>
</body>
</html>
时间: 2024-10-12 23:47:07

数据库连接池--Tomcat内置实现的相关文章

开源连接池_dbcp_c3p0_tomcat内置连接池

5.开源连接池_DBCP_C3P0 开源数据源: DBCP: 导包:commons-dbcp-1.4.jar    commons-pool-1.5.6.jar 方式1: BasicDataSource source = new BasicDataSource(); source.setDriverClassName("com.mysql.jdbc.Driver"); source.setUrl("jdbc:mysql:///day11"); source.setU

Tomcat7 新的数据库连接池Tomcat jdbc pool介绍和配置

Tomcat 在 7.0 以前的版本都是使用commons-dbcp做为连接池的实现,但是 dbcp存在一些问题: (1)dbcp 是单线程的,为了保证线程安全会锁整个连接池 (2)dbcp 性能不佳 (3)dbcp 太复杂,超过 60 个类,发展滞后. 因此,通常J2EE中还会使用其它的高性能连接池,如 C3P0,还有阿里系的 druid 等.为此,Tomcat 从 7.0 开始引入一个新的模块: Tomcat jdbc pool tomcat jdbc pool 近乎兼容 dbcp ,性能更

【转】JDBC学习笔记(8)——数据库连接池(dbcp&amp;C3P0)

转自:http://www.cnblogs.com/ysw-go/ JDBC数据库连接池的必要性 一.在使用开发基于数据库的web程序时,传统的模式基本是按一下步骤: 1)在主程序(如servlet/beans)中建立数据库连接 2)进行sql操作 3)断开数据库连接 二.这种模式开发,存在的问题: 1)普通的JDBC数据库连接使用DriverManager来获取,每次向数据库建立连接的时候都要将Connection加载进内存中,再验证用户名和密码(得花费0.05s~1s的时间).需要数据库连接

Java第三方数据库连接池库-DBCP-C3P0-Tomcat内置连接池

连接池原理 数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”.预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去.我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接. 现在流行的第三方Java数据库连接池库 DBCP 它是Apache推出的Database Connection Pool,属于Apache Commons开源项目,官网:http://commons.apache.org/components.html.Co

模拟Springboot二:内置tomcat

既然要将tomcat内置到项目中,并且能够成功的启动项目就要知道 tomcat  做了哪些事情 ,那么就必须先搞明白 一个 普通的web项目是如何被我们本地配置的tomcat启动并运行的 (1). 先告诉tomcat 要运行哪些项目 (也就是在使用eclipse.idea启动项目前对tomcat的配置工作.或linux上将编译后的war包拷贝到webapp下)    从而在 后面在启动tomcat时,tomcat就会加载编译后的.class项目 (2). tomcat在加载编译后的项目时也会加载

JDBC数据库连接池技术

在JDBC中,获得连接或释放资源是非常消耗系统资源的两个过程,为了解决此类性能问题,通常采用连接池技术,来共享连接.这样我们就不需要每次都创建连接.释放连接了,这些操作都交给了连接池. 用池的概念来管理Connection,这样可以重复使用Connection.有了连接池以后就不用自己亲自创建连接而是通过连接池来获得Connection对象.当使用完Connection之后,调用Connection的close()方法不是真的将连接关闭,而是把Connection归还给连接池.连接池就可以继续保

开源数据库连接池之C3P0

本篇介绍几种开源数据库连接池,同时重点讲述如何使用C3P0数据库连接池. 之前的博客已经重点讲述了使用数据库连接池的好处,即是将多次创建连接转变为一次创建而使用长连接模式.这样能减少数据库创建连接的消耗.正是由于数据库连接池的思想非常重要,所以市面上也有很多开源的数据库连接池供我们使用.主要有以下三个: DBCP数据库连接池 C3P0 数据库连接池 Tomcat内置的数据库连接池(DBCP) 本篇主要讲述C3P0数据库连接池的使用,关于另外两个数据库连接池的用法请看<开源数据库连接池之DBCP>

三种数据库连接池的配置及使用(For JDBC)

DBCP 一.导包 Apache官网下载DBCP包,导入两个包路径如下: commons-dbcp-1.4-bin\commons-dbcp-1.4\commons-dbcp-1.4.jar:连接池的实现 commons-pool-1.5.6-bin\commons-pool-1.5.6\commons-pool-1.5.6.jar:连接池实现的依赖库 CSDN上jar包的下载地址:http://download.csdn.NET/detail/u012802702/9491642 二.代码示例

20160409 javaweb 数据库连接池

1.自己编写数据库连接池: package com.dzq.pool; import java.io.PrintWriter; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQ