1. 程式人生 > >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 釋出!