专栏首页only theone 的记录javalite 使用druid数据库连接池配置

javalite 使用druid数据库连接池配置

  • 在pom文件中引入jar包
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>
  • 在web.xml中引入Durid的过滤器 DruidWebStatFilter
  <filter>
      <filter-name>DruidWebStatFilter</filter-name>
      <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
      <init-param>
          <param-name>exclusions</param-name>
          <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
      </init-param>
      <init-param>
          <param-name>profileEnable</param-name>
          <param-value>true</param-value>
      </init-param>
      <init-param>
          <param-name>principalCookieName</param-name>
          <param-value>USER_COOKIE</param-value>
      </init-param>
      <init-param>
          <param-name>principalSessionName</param-name>
          <param-value>USER_SESSION</param-value>
      </init-param>
 </filter>
 <filter-mapping>
      <filter-name>DruidWebStatFilter</filter-name>
      <url-pattern>/*</url-pattern>
 </filter-mapping>

注意这个过滤器要放在 org.javalite.activeweb.RequestDispatcher 的前面,因为activeWeb 中请求的入口是就是这个过滤器,如果请求先被RequestDispatcher 捕获了的话就直接返回相应的静态页面或者请求结果了。这样的话,就不能捕获到API了。

然后还要在web.xml中添加druid的Servlet 用于展现监控的静态页面,注意的是这里需要设置用户名密码以及客户端的ip,一般设置为只能本机访问,更多详细的配置参考 StatViewServlet配置

  • app.config.DbConfig 类中配置数据源

因为项目中没有引入spring来实现bean的自动管理,所以我们这里需要自己把 com.alibaba.druid.pool.DruidDataSource new 出来,相应的属性配置也是用java代码来实现,如下:

    public void init(AppContext context) {
        String password = context.get("config_password", String.class);
        System.setProperty("druid.wall.logViolation", "true");      //对被认为是攻击的SQL进行LOG.error输出,设置为true表示输入日志
        System.setProperty("druid.wall.throwException", "false");   //对被认为是攻击的SQL抛出SQLException 设置为false表示不抛出异常
        Properties properties = new Properties();
        try {
            properties.load(DbConfig.class.getClassLoader().getResourceAsStream("druidConfig.properties"));
        } catch (IOException e) {
            logger.error("读取druid配置失败");
        }
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setPassword(password);                           // 这里的密码使用的是config.txt中的密码
        dataSource.configFromPropety(properties);
        dataSource.setConnectionProperties("druid.stat.mergeSql=true");            // 相似的sql语句自动融合
        
        environment("development").dataSource(dataSource);
        environment("development").testing().dataSource(dataSource);
        environment("production").dataSource(dataSource);
    }

在代码中读取 druidConfig.properties 配置文件,并把配置文件中的值设置到 DruidDataSource 当中,这个文件的内容如下

druid.url = jdbc:mysql://192.168.2.113:3306/jhbims?useSSL=false&useUnicode=true&characterEncoding=UTF-8&amp;autoReconnect=true
druid.username = jhbims
druid.password = jhbims
druid.driverClassName = com.mysql.jdbc.Driver

druid.initialSize = 5
druid.minIdle = 3
druid.maxActive = 100
drud.maxWait = 1000
druid.testOnBorrow = true
druid.filters = stat,wall

这个文件的更多配置见 DruidDataSource配置属性列表

本文由博客一文多发平台 OpenWrite 发布!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 指定节点滚动到屏幕中间的js

    父节点的class是slimScrollDiv 子节点的class是fa-warning 执行这个js

    Theone67
  • git 小技巧

    我们在使用git作为项目中版本控制工具的时候 1. 对于不需要提交的文件例如IDE自动生成的非代码文件或者编译生成的二进制文件我们可以放在 .gitignor...

    Theone67
  • spring的简易实现(一)

    在第一部分我们实现读取xml的配置,然后实例化xml中的bean 首先定义一个xml和相关的class类

    Theone67
  • 共同父域下的单点登录

          单点登录(Single Sign On),简称为SSO,SSO不仅在企业级开发很常用,在互联网中更是大行其道。随便举几个例子,比如我们登录新浪微博后...

    高爽
  • Springboot实战:发送邮件/重置密码业务

    忘记密码并通过邮件重置密码是一个常见的业务需求,在开发我的个人小项目过程中,也需要用到这个业务,今天就给大家带来一个业务实战。

    Rude3Knife的公众号
  • [Springboot]发送邮件、重置密码业务实战

    忘记密码并通过邮件重置密码是一个常见的业务需求,在开发我的个人小项目过程中,也需要用到这个业务,今天就给大家带来一个业务实战。

    后端技术漫谈
  • 彻底玩坏PRISMA

    自从从技术层面破解了PRISMA以后,我现在工作的一个内容就是“彻底玩坏”PRISMA,反正只要有大师图还有照片就可以做效果模拟,这种大量的用机器代替人做滤镜开...

    刀刀老高
  • 周志华:AAAI 2019论文提交创纪录,达到7745篇

    人工智能顶级会议AAAI 2019,目前的论文摘要提交达到7745篇,创下新纪录。

    量子位
  • R包降级也不全是那么简单

    下载安装Rtools,一次性安装到C盘(必须是C盘哦),再打开Rstudio运行packages的安装代码即可。

    生信技能树
  • 五分钟搞定OpenCV4 + QT5集成与代码测试

    从我接触OpenCV之后,就一直有人不断给我反馈建议我用QT做界面,实现一些功能,听得多了,渐渐的对QT也有一些了解,知道他是可以跨平台,支持各种系统的GUI库...

    OpenCV学堂

扫码关注云+社区

领取腾讯云代金券