druid连接池使用记录

                                                         
    按照https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 的顺序来讲
    一、打开SQL监控:
        1.使用的spring的话,推荐在spring的配置文件中配置StatFilter这个bean。
        2.对于web-jdbc操作的监控,需要配置WebStatFilter这个拦截器,配置如下:
              <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>
              </filter>
              <filter-mapping>
                <filter-name>DruidWebStatFilter</filter-name>
                <url-pattern>/*</url-pattern>
              </filter-mapping>
        3.配置Druid的内置监控页面
            在web.xml注册如下servlet:
                  <servlet>
                    <servlet-name>DruidStatView</servlet-name>
                    <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
                  </servlet>
                  <servlet-mapping>
                    <servlet-name>DruidStatView</servlet-name>
                    <url-pattern>/druid/*</url-pattern>
                  </servlet-mapping>
    二、配置spring与druid的关联(监控spring中bean的方法执行的情况)
            有三种配置方式,个人使用了第二种,使用aop方式的监控。配置如下:
                <!--druid实现监控spring的aop配置-->
                <bean id="druid-stat-interceptor"
                      class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">
                </bean>

                <bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut"
                      scope="prototype">
                    <property name="patterns">
                        <list>
                            <value>com.EP.serviceImpl.*</value>
                        </list>
                    </property>
                </bean>

                <bean id="druidAndSpringAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor">
                    <property name="advice" ref="druid-stat-interceptor"/>
                    <property name="pointcut" ref="druid-stat-pointcut"/>
                </bean>
            使用官方文档的示例代码进行切点和方法的结合,IDE报无法识别的错误,故使用另外一种方式进行结合。
            注:关于aspect与adivisor的一些区别:
                1、Adivisor是一种特殊的Aspect,Advisor代表spring中的Aspect 
                2、区别:advisor只持有一个Pointcut和一个advice,而aspect可以多个pointcut和多个advice
    三、配置web与druid的关联(监控一些web url、session的使用情况等)
            具体怎么使用没什么坑,这里就不当代码的搬运工了


    让druid与web和spring关联之后,基本实现了对一个web应用的全方位检测。下面用一些其它功能,也把用法和遇到的坑记录下:
        一、防止SQL注入攻击
            这段也没什么坑,配置的话,直接在官方文档上面粘贴复制就可以,要提的一点是:我个人所有的filter都是使用自定义的,没有使用的缺省的filter。
        二、应对连接泄露
            白话定义:一些不能被关闭也不能被引用的数据库连接
            没什么可写的=.=
            官方文档还提到了另外一个查看内存是否泄露的方法(其实我想到了。。。。):
            在内置监控页面weburi-detail.html中,查看JdbcPoolConnectionOpenCount和JdbcPoolConnectionCloseCount属性,如果不相等,就是泄漏了。
            (就是打开数是否等于关闭数)
            
其它的也没什么了,有的就再补充了~

猜你喜欢

转载自my.oschina.net/u/2312080/blog/800295