Druid

参考:https://www.cnblogs.com/niejunlei/p/5977895.html

Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。

Druid内置提供了一个StatViewServlet用于展示Druid的统计信息。

这个StatViewServlet的用途包括:

提供监控信息展示的html页面
提供监控信息的JSON API
注意:使用StatViewServlet,建议使用druid 0.2.6以上版本。

  
<servlet>  
    <servlet-name>DruidStatViewservlet-name>  
    <servlet-class>com.alibaba.druid.support.http.StatViewServletservlet-class>  
    <init-param>  
      
    <param-name>resetEnableparam-name>  
    <param-value>trueparam-value>  
    init-param>  
    <init-param>  
      
    <param-name>loginUsernameparam-name>  
    <param-value>druidparam-value>  
    init-param>  
    <init-param>  
      
    <param-name>loginPasswordparam-name>  
    <param-value>druidparam-value>  
    init-param>  
servlet>  
<servlet-mapping>  
    <servlet-name>DruidStatViewservlet-name>  
    <url-pattern>/druid/*url-pattern>  
servlet-mapping> 

Web关联监控配置

<filter>
    <filter-name>DruidWebStatFilterfilter-name>
    <filter-class>com.alibaba.druid.support.http.WebStatFilterfilter-class>
    <init-param>
        <param-name>exclusionsparam-name>
        <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*param-value>
    init-param>
  filter>
  <filter-mapping>
    <filter-name>DruidWebStatFilterfilter-name>
    <url-pattern>/*url-pattern>
  filter-mapping>

经常需要排除一些不必要的url,比如.js,/jslib/等等。配置在init-param中。

通过proxyFilters属性配置

别名配置是通过filters属性配置的,filters属性的类型是String。如果需要通过bean的方式配置,使用proxyFilters属性。

"stat-filter" class="com.alibaba.druid.filter.stat.StatFilter">
    "slowSqlMillis" value="10000" />
    "logSlowSql" value="true" />

"dataSource" class="com.alibaba.druid.pool.DruidDataSource"
    init-method="init" destroy-method="close">
    ... ...
    "filters" value="log4j" />
    "proxyFilters">
        
            "stat-filter" />
        
    

其中filters和proxyFilters属性是组合关系的,不是替换的,在上面的配置中,dataSource有了两个Filter,StatFilter和Log4jFilter。

Druid内置提供一个StatFilter,用于统计监控信息。

StatFilter属性slowSqlMillis用来配置SQL慢的标准,执行时间超过slowSqlMillis的就是慢。slowSqlMillis的缺省值为3000,也就是3秒。

id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter">
    <property name="slowSqlMillis" value="10000" />
    <property name="logSlowSql" value="true" />

在上面的配置中,slowSqlMillis被修改为10秒,并且通过日志输出执行慢的SQL。

WallFilter,用于防止sql注入

<bean id="wall-filter-config" class="com.alibaba.druid.wall.WallConfig" init-method="init">
      
      <property name="dir" value="META-INF/druid/wall/mysql" />
  bean>

  <bean id="wall-filter" class="com.alibaba.druid.wall.WallFilter">
      <property name="dbType" value="mysql" />
      <property name="config" ref="wall-filter-config" />
  bean>

  <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
      ...
      <property name="proxyFilters">
          <list>
              <ref bean="wall-filter"/>
          list>
      property>
  bean>

Druid_第1张图片

Druid内置提供了四种LogFilter(Log4jFilter、Log4j2Filter、CommonsLogFilter、Slf4jLogFilter),用于输出JDBC执行的日志。

id="log-filter" class="com.alibaba.druid.filter.logging.Log4jFilter">
    <property name="resultSetLogEnabled" value="false" />


id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
    ...
    <property name="proxyFilters">
        <list>
            <ref bean="log-filter"/>
        list>
    property>

当程序存在缺陷时,申请的连接忘记关闭,这时候,就存在连接泄漏了。Druid提供了RemoveAbandanded相关配置,用来关闭长时间不使用的连接。例如:

"dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
    ... ...
    "removeAbandoned" value="true" /> 
    "removeAbandonedTimeout" value="1800" /> 
    "logAbandoned" value="true" /> 
    ... ...
  

你可能感兴趣的:(其他)