druid鏈接池使用記錄

                                                         
    按照https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 的順序來說
    1、打開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>
    2、配置spring與druid的關聯(監控spring中bean的方法執行的狀況)
            有三種配置方式,我的使用了第二種,使用aop方式的監控。配置以下:
                <!--druid實現監控spring的aop配置-->
                <bean id="druid-stat-interceptor"
                      class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">
                </bean>css

                <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>html

                <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的一些區別:
                一、Adivisor是一種特殊的Aspect,Advisor表明spring中的Aspect 
                二、區別:advisor只持有一個Pointcut和一個advice,而aspect能夠多個pointcut和多個advice
    3、配置web與druid的關聯(監控一些web url、session的使用狀況等)
            具體怎麼使用沒什麼坑,這裏就不當代碼的搬運工了git

 


    讓druid與web和spring關聯以後,基本實現了對一個web應用的全方位檢測。下面用一些其它功能,也把用法和遇到的坑記錄下:
        1、防止SQL注入攻擊
            這段也沒什麼坑,配置的話,直接在官方文檔上面粘貼複製就能夠,要提的一點是:我我的全部的filter都是使用自定義的,沒有使用的缺省的filter。
        2、應對鏈接泄露
            白話定義:一些不能被關閉也不能被引用的數據庫鏈接
            沒什麼可寫的=.=
            官方文檔還提到了另一個查看內存是否泄露的方法(其實我想到了。。。。):
            在內置監控頁面weburi-detail.html中,查看JdbcPoolConnectionOpenCount和JdbcPoolConnectionCloseCount屬性,若是不相等,就是泄漏了。
            (就是打開數是否等於關閉數)
            
其它的也沒什麼了,有的就再補充了~github

相關文章
相關標籤/搜索