zoukankan      html  css  js  c++  java
  • Tomcat8.5&Mysql8.0配置数据库连接池(DBCP)

    DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。 --百度百科


    开发环境eclipse_photon + Tomcat8.5.32 + mysql8.0

    首先需要修改两个配置文件一个是Tomcat的conf/Context.xml,另一个是项目文件下的web.xml创建web项目时生成

    Context.xml修改时在eclipse当中修改,否则由eclipse启动tomcat时会还原该文件,在<Context>标签下添加<Resource>标签

    <Context>
    
        <!-- Default set of monitored resources. If one of these changes, the    -->
        <!-- web application will be reloaded.                                   -->
        <WatchedResource>WEB-INF/web.xml</WatchedResource>
        <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
    <Resource name = "jdbc/myschool" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="30" maxWaitMillis="10000" username="root" password="111111" driverClassName="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/myschool?serverTimezone=GMT%2B8&amp;useSSL=false" />
    <!-- Uncomment this to disable session persistence across Tomcat restarts --> <!-- <Manager pathname="" /> --> </Context>

     Resource标签属性

    name:连接池名称,一般设定为jdbc/databasename

    auth:设定控制权为容器,固定

    type:数据类型,固定

    maxTotal:最大活动连接数,在之前版本中是maxActive

    maxIdle:最大空闲连接数

    maxWaitMillis:最大空闲时间,在之前版本中是maxWait

    userName:用户名

    password:密码

    dirverClassName:

    MySQL6.0之后Driver(这里跟只跟ConnectionJ相关,ConnectionJ8.0驱动是com.mysql.cj.jdbc.Driver,但是MySQL也可以使用之前版本的ConnectionJ)名改为“com.mysql.cj.jdbc.Driver”,之前是“com.mysql.jdbc.Driver”。需要注意的是这里要在CLASSPATH中指定“mysql-connector-java-8.0.12.jar”文件的位置,否则会报错,提示driverClassName属性不能识别:

      a.mysql-connector-java-8.0.12.jar复制到D:envapache-tomcat-8.5.32lib下

      b.在环境变量中设定CATALINA_HOME为tomcat路径“D:envapache-tomcat-8.5.32”;

      c.CLASSPATH中添加%CATALINA_HOME%lib;

    url:

    指定数据库连接ip和数据库名称

    jdbc:mysql://127.0.0.1:3306/databaseName

    对于MySQL5.*及之前版本只需写到此处就行,MySQL6.0及之后版本需要 指定服务器时区属性,设定useSSL属性等,个属性之间用&连接,在xml/html文件中&用&amp;转义表示,应该写成:

    jdbc:mysql://127.0.0.1:3306/databaseName?serverTimeZone=GMT%2B8&amp;useSSL=false

    若出现字符集问题则需添加下面两个参数:

    useUnicode=true

    characterEncoding=utf8

     链接仍使用&amp;


    修改web.xml文件

    web.xml文件由eclipse创建项目时自动生成(需要在最后一步勾选生成web.xml),在web.xml中<web-app>标签内添加

    <resource-ref>
      	<res-ref-name>jdbc/myschool</res-ref-name>
      	<res-type>javax.sql.DataSource</res-type>
      	<res-auth>Container</res-auth>
     </resource-ref>
    

     指定资源名,资源类型,资源控制权限


    通过JNDI(java naming and directory interface)在java类或jsp页面调用连接池中的连接,

           <%
         Context context = new InitialContext(); DataSource ds=(DataSource)envContext.lookup("java:comp/env/jdbc/myschool"); Connection conn = ds.getConnection(); Statement sta = conn.createStatement(); String sql = "select * from Grade"; ResultSet rSet = sta.executeQuery(sql); while(rSet.next()){ out.println(rSet.getString("GradeName")); } %>
  • 相关阅读:
    windows文件名非法字符过滤检测-正则表达式
    IEflash遇到flash遮挡
    打印iphone支持的所有字体
    xml字符串转xml对象,xml对象转json对象
    本地windows安装memcached服务
    resin启动时报错com.caucho.config.LineConfigException的解决
    8个Javascript小技巧,让你写的代码有腔调
    如何在MySQl数据库中给已有的数据表添加自增ID?
    mysql删除重复数据方法
    用Rem来无脑还原Web移动端自适应的页面
  • 原文地址:https://www.cnblogs.com/annofyf/p/9519552.html
Copyright © 2011-2022 走看看