在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>中加入例如以下内容:

<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资源訪问方式lookup方法。例如以下:

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

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

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

1、配置数据源context.xml:

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

内容例如以下:

    <?xml version="1.0" encoding="UTF-8"?>
<Context path="/">  
    <Resource  
      name="jdbc/mysql"  
      type="javax.sql.DataSource"  
      driverClassName="com.mysql.jdbc.Driver"  
      maxIdle="2"  
      maxWait="5000"  
      username="root"   
      password="admin"  
      url="jdbc:mysql://localhost:3306/user"  
      maxActive="4"/>
      </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. vue假全家桶升级方式,形成类似于小程序的路径管理(新增require-css与require-text)

    1.路径布局大致就是这样,完全模拟小程序,主要是靠require来做到的 2.首先index.html是这样的(配置js和css没有用requireJs主要是方便而且载入什么组件比较清晰) <! ...

  2. [Python爬虫] 之二十二:Selenium +phantomjs 利用 pyquery抓取界面网站数据

    一.介绍 本例子用Selenium +phantomjs爬取界面(https://a.jiemian.com/index.php?m=search&a=index&type=news& ...

  3. [Linux]屏幕输出控制

    专门的术语叫做ANSI Escape sequences(ANSI Escape codes),题目并不恰当,与其说是屏幕输出控制,不如说是通过bash在兼容VT100的终端上进行输出. 主要有以下类 ...

  4. Android使用tcpdump抓包

    AllJoyn中有个问题:Server切换到Client后,重新加入其他Server时join session会失败,原因是timeout(join session是异步的,在指定时间内没有收到回应) ...

  5. Netty4 initAndRegister 解析

    我们从框架的应用层面来分析,NioEventLoopGroup在netty中的使用. 这是我们需要配置的地方. 紧接着我们进入netty的运行中.ServerBootstrap.bind(PORT); ...

  6. 乌云主站所有漏洞综合分析&乌云主站漏洞统计

    作者:RedFree 最近的工作需要将乌云历史上比较有含金量的漏洞分析出来,顺便对其它的数据进行了下分析:统计往往能说明问题及分析事物的发展规律,所以就有了此文.(漏洞数据抓取自乌云主站,漏洞编号从1 ...

  7. 利用Json_encode解决中文问题

    利用Json_encode解决中文问题       public function return_json($data=array()){         echo json_encode($data ...

  8. 原生 javascript 基础回顾

    (1)打开新窗口 语法: window.open([URL], [窗口名称], [参数字符串]) 参数说明: URL:可选参数,在窗口中要显示网页的网址或路径.如果省略这个参数,或者它的值是空 字符串 ...

  9. lodash map

    _.map(collection, [iteratee=_.identity]) 创建一个经过 iteratee 处理的集合中每一个元素的结果数组. iteratee 会传入3个参数:(value, ...

  10. &lt;四&gt;读&lt;&lt;大话设计模式&gt;&gt;之代理模式

    代理模式我想大家即便不熟悉也都听过吧,从字面意思上看就是替别人干活的,比方代理商.在项目的实际应用中也有非常多地方用到.比方spring通过代理模式生成对象等. 代理模式的书面定义:为其它对象提供一种 ...