SpringMVC4+MyBatis+SQL Server2014+druid 监控SQL运行情况

前言

在基于SpringMVC+MyBatis的开发过程中,我们希望能看到自己手写SQL的执行情况,在开发阶段我们可以配置log4j在控制台里基于debug模式查看,那么上线后,在生产声我们想查看SQL的执行情况呢,这时候就该druid出场了,druid自带一些监控界面,可以监控SQL、监控Web、监控URL。

使用druid监控SQL

使用druid监控URI

开发环境

idea2016、SpringMVC4、Mybatis3、druid1.0.28

SSM整合

1、pom.xml

  1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3   <modelVersion>4.0.0</modelVersion>
  4   <groupId>com.autohome</groupId>
  5   <artifactId>SpringMVC3</artifactId>
  6   <packaging>war</packaging>
  7   <version>1.0-SNAPSHOT</version>
  8   <name>SpringMVC3</name>
  9   <url>http://maven.apache.org</url>
 10   <dependencies>
 11     <dependency>
 12       <groupId>junit</groupId>
 13       <artifactId>junit</artifactId>
 14       <version>4.10</version>
 15     </dependency>
 16     <dependency>
 17       <groupId>org.springframework</groupId>
 18       <artifactId>spring-core</artifactId>
 19       <version>4.3.6.RELEASE</version>
 20     </dependency>
 21     <dependency>
 22       <groupId>org.springframework</groupId>
 23       <artifactId>spring-beans</artifactId>
 24       <version>4.3.6.RELEASE</version>
 25     </dependency>
 26     <dependency>
 27       <groupId>org.springframework</groupId>
 28       <artifactId>spring-context</artifactId>
 29       <version>4.3.6.RELEASE</version>
 30     </dependency>
 31     <dependency>
 32       <groupId>org.springframework</groupId>
 33       <artifactId>spring-web</artifactId>
 34       <version>4.3.6.RELEASE</version>
 35     </dependency>
 36     <dependency>
 37       <groupId>org.springframework</groupId>
 38       <artifactId>spring-context-support</artifactId>
 39       <version>4.3.6.RELEASE</version>
 40     </dependency>
 41     <dependency>
 42       <groupId>org.springframework</groupId>
 43       <artifactId>spring-webmvc</artifactId>
 44       <version>4.3.6.RELEASE</version>
 45     </dependency>
 46     <dependency>
 47       <groupId>org.springframework</groupId>
 48       <artifactId>spring-jdbc</artifactId>
 49       <version>4.3.6.RELEASE</version>
 50     </dependency>
 51     <dependency>
 52       <groupId>org.apache.velocity</groupId>
 53       <artifactId>velocity</artifactId>
 54       <version>1.6.2</version>
 55     </dependency>
 56     <dependency>
 57       <groupId>org.apache.velocity</groupId>
 58       <artifactId>velocity-tools</artifactId>
 59       <version>2.0</version>
 60     </dependency>
 61     <dependency>
 62       <groupId>org.mybatis</groupId>
 63       <artifactId>mybatis</artifactId>
 64       <version>3.4.2</version>
 65     </dependency>
 66     <dependency>
 67       <groupId>org.mybatis</groupId>
 68       <artifactId>mybatis-spring</artifactId>
 69       <version>1.3.0</version>
 70     </dependency>
 71     <dependency>
 72       <groupId>com.microsoft.sqlserver</groupId>
 73       <artifactId>sqljdbc4</artifactId>
 74       <version>4.0</version>
 75     </dependency>
 76     <dependency>
 77       <groupId>commons-dbcp</groupId>
 78       <artifactId>commons-dbcp</artifactId>
 79       <version>1.4</version>
 80     </dependency>
 81     <dependency>
 82       <groupId>javax.servlet</groupId>
 83       <artifactId>javax.servlet-api</artifactId>
 84       <version>3.1.0</version>
 85     </dependency>
 86     <dependency>
 87       <groupId>com.alibaba</groupId>
 88       <artifactId>druid</artifactId>
 89       <version>1.0.28</version>
 90     </dependency>
 91     <dependency>
 92       <groupId>log4j</groupId>
 93       <artifactId>log4j</artifactId>
 94       <version>1.2.17</version>
 95     </dependency>
 96   </dependencies>
 97   <build>
 98     <finalName>SpringMVC3</finalName>
 99   </build>
100 </project>

2、web.xml

使用druid监控主要配置DruidWebStatFilter、StatViewServlet、druid用户名和密码(可选)

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <!--告知javaEE容器,有那些内容需要添加到上下文里去-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>

  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <!--log4j参数配置-->
  <context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:config/log4j.properties</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  </listener>

  <!--spring 前端控制器-->
  <servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc-servlet.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

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

  <!--druid监控servlet-->
  <servlet>
    <servlet-name>druidStatView</servlet-name>
    <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
    <init-param>
      <!-- 允许清空统计数据 -->
      <param-name>resetEnable</param-name>
      <param-value>true</param-value>
    </init-param>
    <init-param>
    <!-- 用户名 -->
    <param-name>loginUsername</param-name>
    <param-value>sqlserver</param-value>
  </init-param>
    <init-param>
      <!-- 密码 -->
      <param-name>loginPassword</param-name>
      <param-value>123</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>druidStatView</servlet-name>
    <url-pattern>/druid/*</url-pattern>
  </servlet-mapping>

  <!--防止js,css等文件被springmvc拦截 让tomcat来处理-->
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/2sc/js/*</url-pattern>
    <url-pattern>/2sc/Style/*</url-pattern>
  </servlet-mapping>
</web-app>

3、springmvc-servlet.xml

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <beans xmlns="http://www.springframework.org/schema/beans"
  3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4        xmlns:mvc="http://www.springframework.org/schema/mvc"
  5        xmlns:context="http://www.springframework.org/schema/context"
  6        xsi:schemaLocation="http://www.springframework.org/schema/beans
  7        http://www.springframework.org/schema/beans/spring-beans.xsd
  8        http://www.springframework.org/schema/context
  9        http://www.springframework.org/schema/context/spring-context.xsd
 10        http://www.springframework.org/schema/mvc
 11        http://www.springframework.org/schema/mvc/spring-mvc.xsd
 12 ">
 13
 14     <!--从配置文件加载数据库信息-->
 15     <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
 16         <property name="locations" value="classpath:config/jdbc.properties"/>
 17         <property name="fileEncoding" value="UTF-8"/>
 18     </bean>
 19
 20     <!--配置数据源,这里使用Spring默认-->
 21     <!--<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">-->
 22         <!--<property name="driverClassName" value="${sqlserver.driver}"/>-->
 23         <!--<property name="url" value="${sqlserver.url}"/>-->
 24         <!--<property name="username" value="${sqlserver.username}"/>-->
 25         <!--<property name="password" value="${sqlserver.password}"/>-->
 26     <!--</bean>-->
 27
 28     <!--配置数据源 druid-->
 29     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
 30         <property name="driverClassName" value="${sqlserver.driver}"/>
 31         <property name="url" value="${sqlserver.url}" />
 32         <property name="username" value="${sqlserver.username}" />
 33         <property name="password" value="${sqlserver.password}" />
 34
 35         <property name="filters" value="stat" />
 36
 37         <property name="maxActive" value="20" />
 38         <property name="initialSize" value="1" />
 39         <property name="maxWait" value="60000" />
 40         <property name="minIdle" value="1" />
 41
 42         <property name="timeBetweenEvictionRunsMillis" value="60000" />
 43         <property name="minEvictableIdleTimeMillis" value="300000" />
 44
 45         <property name="testWhileIdle" value="true" />
 46         <property name="testOnBorrow" value="false" />
 47         <property name="testOnReturn" value="false" />
 48
 49         <property name="poolPreparedStatements" value="true" />
 50         <property name="maxOpenPreparedStatements" value="20" />
 51     </bean>
 52
 53     <!--扫描Mapper-->
 54     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
 55         <property name="basePackage" value="com.autohome.mapper"/>
 56     </bean>
 57
 58     <!--配置sqlSessionFactory-->
 59     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
 60         <property name="configLocation" value="classpath:springmvc-mybatis.xml"/>
 61         <property name="dataSource" ref="dataSource"/>
 62     </bean>
 63
 64     <!--启用最新的注解器、映射器-->
 65     <mvc:annotation-driven/>
 66
 67     <!--使用默认的Servlet来响应静态资源-->
 68     <mvc:default-servlet-handler/>
 69
 70     <!--扫描Controller注解类-->
 71     <context:component-scan base-package="com.autohome.controller" />
 72     <!--扫描Service注解类-->
 73     <context:component-scan base-package="com.autohome.service"/>
 74
 75     <!--velocity模板配置-->
 76     <bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
 77         <property name="resourceLoaderPath" value="/WEB-INF/views/"/>
 78         <property name="configLocation" value="classpath:config/velocity.properties"/>
 79         <property name="velocityProperties">
 80             <props>
 81                 <prop key="input.encoding">UTF-8</prop>
 82                 <prop key="output.encoding">UTF-8</prop>
 83             </props>
 84         </property>
 85     </bean>
 86
 87     <!--配置视图解析器-->
 88
 89     <!--jsp视图解析器-->
 90     <!--<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">-->
 91         <!--<property name="prefix" value="/WEB-INF/views/"/>-->
 92         <!--<property name="suffix" value=".jsp"/>-->
 93     <!--</bean>-->
 94
 95     <bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
 96         <property name="suffix" value=".vm"/>
 97         <property name="prefix" value=""/>
 98         <property name="contentType" value="text/html;charset=UTF-8"/>
 99     </bean>
100
101 </beans>

总结

项目结构我在第一篇ssm整合的基础上继续开发,加入了log4j、druid监控。

参考

https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatViewServlet%E9%85%8D%E7%BD%AE

时间: 2024-12-29 11:14:00

SpringMVC4+MyBatis+SQL Server2014+druid 监控SQL运行情况的相关文章

MS SQL Server2014链接MS SQL Server 2000

开发与企业应用中,好几个版本SQL Server相互链接.分布式读取与存储,需要实现sp_addlinkedserver.SQL Server 2000, SQL Server 2008, SQL Server 2012和SQL Server 2014: 但今天在本机的MS SQL Server 2014中,想添加SQL Server 2000的链接,使用下面的方法:<SQL Server创建链接服务器的一些存储过程和例子>http://www.cnblogs.com/insus/archiv

Linux crontab的使用方式,sh脚本的编写,sh脚本自动启动tomcat服务器,sh监控系统运行情况

1.如果想使用Linux crontab(类似java quartz),需要先启动crontab.关于crontab的启动.关闭.重启.重新载入配置的方式如下: /sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /sbin/service crond restart //重启服务 /sbin/service crond reload //重新载入配置 2.crontab的命令介绍: A:添加crontab的命令是:c

应用Druid监控SQL语句的执行情况

Druid是什么? Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBoss DataSource. Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验. 同时Druid不仅仅是一个数据库连接池,它包括四个部分:Druid是一个JDBC组件,它包括三个部分: 基于Filter-Chain模式的插件体系. DruidDataSource

应用Druid监控SQL语句的执行情况(转)

Druid是什么? Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBoss DataSource. Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验. 同时Druid不仅仅是一个数据库连接池,它包括四个部分:Druid是一个JDBC组件,它包括三个部分: 基于Filter-Chain模式的插件体系. DruidDataSource

使用jconsole工具来监控java运行情况

参考:http://blog.163.com/lucas_nina/blog/static/185960149201493034258448/ 经验证OK   jconsole是jdk自带的工具.所以要先安装jdk   1.jconsole工具的路径: 通过which jconsole来查看 /usr/local/jdk1.7.0_79/bin/jconsole 2.使用方式: 在linux监控端的图形界面执行:/usr/local/jdk1.7.0_79/bin/jconsole 将出现图形化

监控 SQL Server (2005/2008) 的运行状况--来自微软TetchNet

原文地址:http://technet.microsoft.com/zh-cn/library/bb838723.aspx Microsoft SQL Server 2005 提供了一些工具来监控数据库.方法之一是动态管理视图.动态管理视图 (DMV) 和动态管理函数 (DMF) 返回的服务器状态信息可用于监控服务器实例的运行状况.诊断问题和优化性能. 常规服务器动态管理对象包括: dm_db_*:数据库和数据库对象 dm_exec_*:执行用户代码和关联的连接 dm_os_*:内存.锁定和时间

监控sql运行时剩余时间

--监控sql执行时剩余时间 你知道正在执行的sql大概须要多长时间么? 你知道正在执行的sql大概完毕了百分之几么? 你知道正在执行的sql大概还要多长时间完毕么? V$SESSION_LONGOPS帮你忙. V$SESSION_LONGOPS在<span style="font-family: Arial, Helvetica, sans-serif;">官方文档中的描写叙述:</span> V$SESSION_LONGOPS displays the st

druid控制台无法监控sql问题

springboot+mybatisplus+druid按照教程配置好之后,druid控制台监控sql页面无数据,filter类名为空,貌似没有注册进去去,代码如下: @Configurationpublic class DruidConfiguration { @Bean public ServletRegistrationBean druidServlet() { ServletRegistrationBean<Servlet> bean = new ServletRegistration

Druid数据源SQL数据库与Spring监控

Druid监控概要说明 为什么要监控? Druid是什么?德鲁伊 URL监控配置说明 配置步骤 步骤 配置 第一步 web.xml 配置 WebStatFilter 第二步 WebStatFilter 配置拦截参数,Cookie或Session中的用户名 第三步 访问Servlet /druid 查看监控结果 配置web.xml WebStatFilter https://github.com/alibaba/druid/wiki/配置 URL监控效果 Session监控效果 SQL监控配置说明