Tomcat (7.0)数据源配置

来源:互联网 发布:大数据 crm 系统架构 编辑:程序博客网 时间:2024/06/06 20:58

在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 0