• Tomcat数据源总结



    一、数据源的由来


    JDBC操作主要由以下几步组成:

    (1)Class.forName();

    (2)Connection con  = DriverManager.getConnection();

    (3)PreparedStatement stat = con.prepareStatement(sql);

    (4)stat.executeQuery();

    (5)con.close();

    很显然,(1)(2)(5)步是每次JDBC操作都要执行的,重复执行是非常耗时的,因此为了解决重复操作的问题,引入了数据源。


    二、数据源介绍


    存在一个数据库连接池,在池中存在多个数据库连接,用户对数据库操作时取出一个,用完放回连接池中。

    考虑因素:

    (1)最小连接数:连接池中最小的连接个数;

    (2)最大连接数:连接池中最大连接个数;

    (3)最大等待时间:不能连接时最长等待时间;

    Tomcat对数据库连接池支持;


    三、JNDI(Java Naming Directory Interface)


    1.通过DataSource的名字查找对应的DataSource;

    2.通过一个DataSource在连接池中获得一个Connection;

     

    四、配置步骤

     

    A 全局数据源的配置

    全局数据源意思是配置了一个数据源后任何web应用都能够访问。

    (1)将数据库的驱动程序复制到tomcat\lib中;

    (2)在server.xml中加入:

    <Context path="/Test" docBase="E:\JAVA WEB" reloadable="true">    <!-- 数据源需要在Context中配置-->
       <Resource name="jdbc/xiazdong"                                    <!-- 数据源名称-->
        auth="Container"
        type="javax.sql.DataSource"
        maxActive="100"                                        <!-- 最大连接数-->
        maxIdle="30"                                            <!-- 最小连接数-->
        maxWait="10000"                                    <!-- 最大等待时间-->
        username="root"
        password="123456"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://localhost:3306/xiazdong"/>
      </Context>

    (3)在web.xml中加入:

    <resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/xiazdong</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
     </resource-ref>

    B 局部数据源配置

    (1)将驱动器复制到tomcat/lib中;

    (2)在conf/catalina/localhost/test.xml中添加:

    	<Resource name="jdbc/test" auth="Container"
    		type="javax.sql.DataSource"
    		driverClassName="com.mysql.jdbc.Driver"
    		url="jdbc:mysql://localhost:3306/javaee"
    		username="root" password="12345" maxActive="5"
    		maxIdle="2" maxWait="10000"/>

    作为<Context>的子元素;


    五、主要操作步骤

    import javax.naming.*;
    import javax.sql.*;
    import java.sql*;

    Context ctx = new InitialContext();

    DataSource ds = ctx.lookup("java:comp/env/jdbc/xiazdong");

    Connection con  = ds.getConnection();

    可以很清楚的看出,从以上代码完全看不出操作的是哪个数据库,配置都在配置文件中;

    作者:xiazdong
    出处:http://blog.xiazdong.info
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    Mac下安装配置SDK
    macOS brew install 404:Bottle missing, falling back to the default domain错误的修复
    如何修复“无法打开应用,因为Apple无法检查其是否包含恶意软件“
    Selenium4+Python3系列(六) Selenium的三种等待,强制等待、隐式等待、显式等待
    Selenium4.0+Python3系列(四) 常见元素操作(含鼠标键盘事件)
    解决selenium+python 打开浏览器报错 DeprecationWarning executable_path has been deprecated, please pass in a Service object问题
    Selenium4+Python3系列(五) 多窗口处理之句柄切换
    技术团队:给代码评审发起者的4个建议
    中台建设:中台有效落地的6脉神剑
    在代码评审中用好这7招,很容易就能建立起你的反对同盟
  • 原文地址:https://www.cnblogs.com/xiazdong/p/3058137.html
Copyright © 2020-2023  润新知