在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属性一致;

最新文章

  1. SQL语句来查询今天、昨天、7天内、30天的数据,经典!
  2. JVM大端判断
  3. 使用C#设计Fluent Interface
  4. 简单Hosts使用说明
  5. web.xml中load-on-startup标签的含义
  6. jQuery实现图片轮播
  7. 修复CefSharp浏览器组件中文输入Bug
  8. PPT插件 用js制作PPT
  9. python cookbook学习笔记 第一章 文本(2)
  10. C --&gt; OC with RunTime
  11. PL/SQL DEVELOPER 导出表数据
  12. directshow filter中添加属性页
  13. C语言之将弧度值转换为角度值
  14. qemu对虚拟机的内存管理(二)
  15. Django runserver UnicodeDecodeError
  16. 单源最短路径算法——Bellman-ford算法和Dijkstra算法
  17. [C++]Linux之Ubuntu下编译C程序出现错误:“ stray ‘\302&#39;或者&#39;\240&#39; in program”的解决方案
  18. Spring Cloud(Dalston.SR5)--Eureka 服务实例健康检查
  19. 添加wifi adb
  20. CF989C A Mist of Florescence (构造)

热门文章

  1. java基础之:java注解
  2. Linux、CentOS系统下调整home和根分区大小
  3. Linux命令未找到(command not found),误删Linux path原始路径
  4. win10系统怎样手动安装cab更新补丁
  5. Tabs or Spaces?
  6. svn命令行版本回滚
  7. iBatis in或not in 查询
  8. Android学习笔记(一)——Activity简介 和 View
  9. C# 获取当前路径方法(转)
  10. web页面性能分析一些网址