在Tomcat这个Java Web容器下通过配置DataSource(数据源)对象能够解决上面所述的问题。

JDBC中的javx.sql.DataSource接口负责建立于数据库的连接。程序中直接从数据源中获取数据库连接。DataSource对象由Servlet容器Tomcat进行管理,事实上获取数据库连接是从连接池中选取空暇连接。

它基于Java中的JNDI(Java 命名与文件夹接口)来实现。

一、全部项目共用一个连接池

1、配置数据源context.xml:

在tomcat 的conf 文件夹下有context.xml 文件,这个文件就是配置数据源的。

在tomcat->conf->context.xml文件配置内容:

<Resource

name="jdbc/mysql"

auth="Container"

type="javax.sql.DataSource"

maxActive="20"

maxIdel="10"

maxWait="1000"

username="root"

password="admin"

driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://127.0.0.1:3306/user" >

</Resource>

将 jdbc 驱动加入到Tomcat 的lib  文件夹下

2、配置JNDI资源引用web.xml:

在 项目的web.xml的 <web-app>   </web-app>中加入例如以下内容:

  1. <resource-ref>
  2. <res-ref-name>jdbc/mysql</res-ref-name>
  3. <res-type>javax.sql.DataSource </res-type>
  4. <res-auth>Container</res-auth>
  5. </resource-ref>

使用相对简单些的JNDI资源訪问方式lookup方法。例如以下:

    1. Context sourceCtx = new InitialContext();
    1. DataSource ds =(DataSource)sourceCtx.lookup("java:comp/env/jdbc/mysql");
    1. conn = ds.getConnection();

ok 到这里数据库链接就获取到了

二、每一个Web项目独立用自己连接池配置:把xml内容放入一个详细的项目文件夹

1、配置数据源context.xml:

在该项目文件夹的META-INF,创建context.xml,事实上这个配置和tomcat/conf/context.xml这个文件是一样的。能够直接将那个context.xml 文件复制过来

内容例如以下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Context path="/">  
  3.     <Resource  
  4.       name="jdbc/mysql"  
  5.       type="javax.sql.DataSource"  
  6.       driverClassName="com.mysql.jdbc.Driver"  
  7.       maxIdle="2"  
  8.       maxWait="5000"  
  9.       username="root"   
  10.       password="admin"  
  11.       url="jdbc:mysql://localhost:3306/user"  
  12.       maxActive="4"/>
  13.       </Context>

然后把JDBC驱动导入到
WEB-INF 下的lib目录里

2、配置JNDI资源引用web.xml:

并在该项目web.xml  <web-app> </web-app>增加

  <resource-ref>

  <res-ref-name>jdbc/mysql</res-ref-name>

  <res-type>javax.sql.DataSource</res-type>

  <res-auth>Container</res-auth>

  </resource-ref>

JNDI 获取数据源。数据库链接:

Context initContext = new
InitialContext();

Context envContext  = (Context)initContext.lookup("java:/comp/env");

DataSource ds = (DataSource)envContext.lookup("jdbc/mysql");

Connection conn = ds.getConnection();

********************* 元素属性说明**********************

<Resource>元素的属性说明: 

Name:指定Resource资源的JNDI名称。

auth:可选填Container或Application。指定Resource的管理者。

type:指定Resource资源的Java类名;

maxActive:设置数据库连接池中活动状态连接的最大数目,为0则不受限制。

maxIdle:设置数据库连接池中空暇状态连接的最大数目,为0则不受限制;

maxWait:设置数据库连接池中空暇状态连接的最长等待时间,超时则抛出异常,为-1则可无限等待;

username:指定数据库的用户名;

password:指定连接数据库的密码。

driverClassName:指定数据库的JDBC驱动器的Driver实现类名字(这里为MySQL数据库连接)。

url:连接数据库的url。

*******************************************************

<resource-ref>元素的子元素说明: 

description:对所引用JNDI资源的描写叙述;

res-ref-name:引用的JNDI资源的名称,与上面<Resource>元素中的name属性一致。

res-type:引用的JNDI资源的类名称,与上面<Resource>元素中的type属性一致;

res-auth:引用资源的管理者,上面<Resource>元素中的auth属性一致;

Tomcat (7.0)数据源配置的更多相关文章

  1. XXLJOB2.1.0数据源配置踩坑记录

    最近在看XXLJOB,因为截至到发文时间最新的版本是2.1.0而且需要建立的数据库与Quartz解耦了,所以就用了最新的版本. 首先说一下踩坑过程: 代码开发完成之后,在定时跑的时候第一次跑的多数失败 ...

  2. Linux Tomcat 6.0安装配置实践总结

    系统环境: Red Hat Enterprise Linux Server release 5.7 (Tikanga)  64位 Tomcat下载 从官方网站 http://tomcat.apache ...

  3. Tomcat 7.0的配置

     一.安装JDK 1.7     1.添加环境变量:在我的电脑->属性->高级->环境变量     2.新建系统变量,变量名:JAVA_HOME  变量值:C:\Program Fi ...

  4. Tomcat 6.0下配置HTTPS

    最近项目需要使用到https,所以回顾整理了一下,其实在tomcat的文档中已经有了详细描述,我们启动Tomcat后,可以在docs文档中找到 地址如下:http://localhost:8080/d ...

  5. windows 版Tomcat 7.0的配置

    http://hi.baidu.com/liguohei/item/d6ea23ff904f98753d198b24 测试成功,截图 ~~~~~~~~~~~~~~~ 一.安装JDK 1.7 1.添加环 ...

  6. Tomcat 9.0安装配置

    本文转自:http://blog.sina.com.cn/s/blog_15126e2170102w5o8.html 一.JDK的安装与配置 1.从官网下载jdk,注意是jdk不是jre.最好从官网下 ...

  7. Tomcat 9.0 安装配置

    本文转自:http://blog.sina.com.cn/s/blog_15126e2170102w5o8.html 一.JDK的安装与配置 1.从官网下载jdk,注意是jdk不是jre.最好从官网下 ...

  8. 【转】Tomcat 9.0安装配置

    本文转自:http://blog.sina.com.cn/s/blog_15126e2170102w5o8.html 一.JDK的安装与配置 1.从官网下载jdk,注意是jdk不是jre.最好从官网下 ...

  9. tomcat之JNDI数据源配置

    一.docbase包含方式部署项目 D:\apache-tomcat-6.0.29\conf\server.xml里面添加如下内容   <Host name="localhost&qu ...

随机推荐

  1. htmltestrunner解决错误日志出界问题

    扩大背后的区域放大,让它看起来没有出界 .popup_window {    display: none;    position: relative;    left: 0px;    top: 0 ...

  2. C++之重载操作符

    1.类中重载+操作符 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; class Obje ...

  3. 使用spice连接kvm guest主机

    spice技术已经出来很久了,其是优于VNC的一种远程桌面协议,之所以这里记录下,是由于某些加密视频文件(如以vpy结尾的超时代视频加密),会识别主机的特征吗,一旦主机重启后这些视频又没法查看了,所以 ...

  4. 我使用过的Linux命令之swig - 把C/C++的代码嵌入Java等语言的开发工具

    用途说明 SWIG是Simplified Wrapper and Interface Generator的缩写,其官方站点是http://www.swig.org/.SWIG是个帮助使用C或者C++编 ...

  5. 修改git的author 和 commiter

    点击:Add Entry

  6. js获取url參数值的两种方式具体解释

    有个url例如以下: http://passport.csdn.net/account/login? from=http%3a%2f%2fwrite.blog.csdn.net%2fpostedit ...

  7. EffectiveJava(24)使用@SuppressWarnings("unchecked")消除非受检警告

    -..使用泛型编程时,会遇到许多编译器警告,如:非受检强制转化警告,非受检方法调用警告,非受检普通数组创建警告,费受精转换警告.这次的内容就是遇到这些警告的时候你该怎么办. PS:非受检警告就是代码上 ...

  8. vue scoped 解决样式不生效问题

    对于添加样式不能影响子组件样式的情况使用:>>> <style scoped> .sti-inline{ display: inline; } .sti-searchfo ...

  9. 访问vector元素方法的效率比较(转)

    LInux下: gcc 4.47,red hat6 #include<iostream> #include<vector> #include<time.h> usi ...

  10. java泛型 7 泛型的基本介绍和使用

    现在开始深入学习Java的泛型了,以前一直只是在集合中简单的使用泛型,根本就不明白泛型的原理和作用.泛型在java中,是一个十分重要的特性,所以要好好的研究下. 一.泛型的基本概念 泛型的定义:泛型是 ...