zoukankan      html  css  js  c++  java
  • Tomcat (7.0)数据源配置

    在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
    BA
    GMP文件分类与编码管理规程
    杂-电工学
    产品学习1
    模拟电子技术1
    电路组装1
    Unable to simultaneously satisfy constraints.
    xcode
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/7235001.html
Copyright © 2011-2022 走看看