前言

  前面讲过了Javamelody的基本配置,这里简单的介绍下,如何使用Javamelody来监控JDBC以及SQL。

  手码不易,转载请注明:xingoo

  

  在网上搜索很多资料,仅有开源社区上的两篇帖子有点帮助,但对于监控SQL还是有很多问题,有不少的网友遇到了跟我同样的问题,监控页面打开可就是监控不到数据,SQL一栏无论如何都是0,要不就是NaN。

  这个问题其实还是因为数据源的部分没有配置正确,这里介绍两种配置的方式。

  第一种,直接配置数据源,添加额外的jdbc驱动

  按照UserGuide的文档来说,可以使用Jndi配置数据源的方式,比如如果使用Hibernate,那么在hinernate.cfg.xml中配置

        <property name="hibernate.connection.driver_class">net.bull.javamelody.JdbcDriver</property>
<property name="hibernate.connection.driver">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/myschema</property>
<property name="hibernate.connection.username">myuser</property>
<property name="hibernate.connection.password">mypassword</property>

  注意这个地方,可能一般的hibernate.cfg.xml参数并不是像上面的配置,不要紧。

  只要保证原有的connection.driver是真是的驱动,上面添加一个参数connection.driver_class是javamelody的那个jdbc驱动即可。即参考我下面诶之oracle的hibernate数据源文件

<?xml version="1.0" encoding="GBK"?>
<!-- 指定Hibernate配置文件的DTD信息 -->
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- hibernate- configuration是连接配置文件的根元素 -->
<hibernate-configuration>
<session-factory> <!-- 看这里!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-->
<!-- 指定连接数据库所用的驱动 注意下面这句哦!!!!就是这句话起关键性的作用-->
<property name="connection.driver_class">net.bull.javamelody.JdbcDriver</property>
<property name="connection.driver">oracle.jdbc.driver.OracleDriver</property>
<!-- 指定连接数据库的url,hibernate连接的数据库名 -->
<property name="connection.url">jdbc:oracle:thin:@localhost::orcl</property>
<property name="connection.useUnicode">true</property>
<property name="connection.characterEncoding">gbk</property>
<!-- 指定连接数据库的用户名 -->
<property name="connection.username">test</property>
<!-- 指定连接数据库的密码 -->
<property name="connection.password">test</property>
<!-- C3P0连接池设定-->
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<!-- 指定连接池里最大连接数 -->
<property name="hibernate.c3p0.max_size"></property>
<!-- 指定连接池里最小连接数 -->
<property name="hibernate.c3p0.min_size"></property>
<!-- 指定连接池里连接的超时时长 -->
<property name="hibernate.c3p0.timeout"></property>
<!-- 指定连接池里最大缓存多少个Statement对象 -->
<property name="hibernate.c3p0.max_statements"></property>
<property name="hibernate.c3p0.idle_test_period"></property>
<property name="hibernate.c3p0.acquire_increment"></property>
<property name="hibernate.c3p0.validate">true</property>
<property name="hibernate.c3p0.preferredTestQuery ">select sysdate from dual </property>
<property name="hibernate.c3p0.idleConnectionTestPeriod "></property>
<property name="hibernate.c3p0.maxIdleTime"></property>
<property name="hibernate.c3p0.testConnectionOnCheckout">true</property> <!-- 指定数据库方言 -->
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
<!-- 根据需要自动创建数据库 -->
<property name="hbm2ddl.auto">update</property>
<!-- 显示Hibernate持久化操作所生成的SQL -->
<property name="show_sql">true</property>
<!-- 将SQL脚本进行格式化后再输出-->
<property name="hibernate.format_sql">true</property>
<!-- 罗列所有的映射文件-->
<mapping resource="Person.hbm.xml"/> </session-factory>
</hibernate-configuration>

  参考上面这样的配置,就可以了。打开监控页面,就可以看到SQL相关的参数了。

  另一种呢,就是使用spring,如果使用spring,是不需要额外设置驱动类的。

  前提是,必须在加载web.xml的时候指定加载的spring配置文件。需要在web.xml中实现一个监听,这个监听回使web应用在读取web.xml时,加载指定的spring文件。

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

  然后我们通过设置参数,设置启动的spring文件

        <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:net/bull/javamelody/monitoring-spring.xml
classpath:context/services.xml
classpath:context/data-access-layer.xml
/WEB-INF/applicationContext.xml
</param-value>
</context-param>

  注意monitoring-spring.xml与applicaitonContext.xml的位置,我好多次使用这种方式都没有成功,貌似就是这个位置的顺序颠倒了。是否是这个原因,还有待验证(明天测试,现在没有环境)。

  整个web.xml的配置文件,参考下面:

<?xml version="1.0" encoding="GBK"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<!-- 指定spring的配置文件 -->
<context-param>
<param-name> contextConfigLocation</param-name>
<param-value> classpath:net/bull/javamelody/monitoring-spring.xml
classpath:bean.xml
</param-value>
</context-param> <filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> <init-param>
<param-name>struts.action.extension</param-name>
<param-value>action</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <filter>
<filter-name>monitoring</filter-name>
<filter-class>net.bull.javamelody.MonitoringFilter</filter-class> <init-param>
<param-name>log</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>monitoring</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class> net.bull.javamelody.SessionListener</listener-class>
</listener>
<!-- 下面这个用于指定监听,会使web应用去加载spring的配置文件,而不是每次等到用的时候读取-->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

  另外,根据官方文档,如果你的应用与monitoring-spring.xml或者AOP之类的有冲突,那么使用monitoring-spring-datasource.xml文件替代monitoring-spring.xml就可以了,这个文件仅仅包含一个datasource的发送进程以及SpringDataSourceFactoryBean的一个例子。

  手码不易,转载请注明:xingoo

JavaMelody监控SQL的更多相关文章

  1. javaMelody监控javaWeb程序性能

    JavaMelody应用监控使用指南 原文:<JavaMelody应用监控使用指南> 前言 本文参考JavaMelody的UserGuide编写,部分文字均来自文档,添加有个人理解.并进行 ...

  2. 使用javamelody监控springboot项目

    JavaMelody是用来在QA和实际运行生产环境中监控Java或Java EE应用程序服务器的一个开源框架.它不是一个工具来模拟来自用户的请求,而是一个测量和计算用户在实际操作中应用程序的使用情况的 ...

  3. 监控 SQL Server (2005/2008) 的运行状况

    Microsoft SQL Server 2005 提供了一些工具来监控数据库.方法之一是动态管理视图.动态管理视图 (DMV) 和动态管理函数 (DMF) 返回的服务器状态信息可用于监控服务器实例的 ...

  4. Performance Monitor3:监控SQL Server的内存压力

    SQL Server 使用的资源受到操作系统的调度,同时,SQL Server在内部实现了一套调度算法,用于管理从操作系统获取的资源,主要是对内存和CPU资源的调度.一个好的数据库系统,必定在内存中缓 ...

  5. 用脚本定时监控SQL Server主从一致性

    用脚本定时监控SQL Server主从一致性 首先说一下我们的环境 我们使用的是事务复制,复制是单向的,主服务器和从服务器都在同一个机房,当然不同机房也可以,只需要改一下IP和端口 下面的脚本在我们的 ...

  6. 第三篇——第二部分——第六文 监控SQL Server镜像

    原文:第三篇--第二部分--第六文 监控SQL Server镜像 原文出处:http://blog.csdn.net/dba_huangzj/article/details/26846203 要优化, ...

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

    前言 在基于SpringMVC+MyBatis的开发过程中,我们希望能看到自己手写SQL的执行情况,在开发阶段我们可以配置log4j在控制台里基于debug模式查看,那么上线后,在生产声我们想查看SQ ...

  8. 采用Opserver来监控你的ASP.NET项目系列(二、监控SQL Server与Asp.Net项目)

    前言 之前有过2篇关于如何监控ASP.NET core项目的文章,有兴趣的也可以看看. 今天我们主要来介绍一下,如何使用Opserver监控我们的SQL Server 和ASP.NET项目的异常监控 ...

  9. 【转】SQL Server 运行状况监控SQL语句

    SQL Server 运行状况监控SQL语句   Microsoft SQL Server 2005 提供了一些工具来监控数据库.方法之一是动态管理视图.动态管理视图 (DMV) 和动态管理函数 (D ...

随机推荐

  1. .Net程序员之Python基础教程学习----函数和异常处理[Fifth Day]

       今天主要记录,Python中函数的使用以及异常处理. 一.函数:    1.函数的创建以及调用. def Add(val1,val2): return val1+val2; print Add( ...

  2. 利用HTML实现软件的UI

    先看看下面的实例 这是应朋友之邀编写的查询职业技能鉴定考核的分数的软件.看过我之前的博文的,可知这是借用我之前的网页界面. 这个UI,如果用WinForm的控件来实现,难度很高. 于是另辟蹊径,用We ...

  3. 给深度学习入门者的Python快速教程 - 基础篇

    实在搞不定博客园的排版,排版更佳的版本在: https://zhuanlan.zhihu.com/p/24162430 Life is short, you need Python 人生苦短,我用Py ...

  4. POJ2184 Cow Exhibition[DP 状态负值]

    Cow Exhibition Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12420   Accepted: 4964 D ...

  5. combobox 属性、事件、方法

    一 .combobox 属性.事件.方法公共属性 名称 说明 AccessibilityObject 获取分配给该控件的 AccessibleObject. AccessibleDefaultActi ...

  6. Hoj2634 How to earn more?

    How to earn more My Tags   (Edit)   Source : ww   Time limit : 1 sec   Memory limit : 64 M Submitted ...

  7. ES6 .Set数据结构去除重复元素

    用法一 var set = new Set([1, 2, 3, 4, 2, 8, 4]); //两个2 for (var elem of set) { console.log(elem) // 输出结 ...

  8. mysql中判断记录是否存在方法比较

    我这里总结了判断记录是否存在的常用方法: sql语句:select count(*) from tablename; 然后读取count(*)的值判断记录是否存在.对于这种方法性能上有些浪费,我们只是 ...

  9. ASP.NET MVC图片上传前预览

    回老家过春节,大半个月,在家的日子里,吃好睡好,人也长了3.5Kg.没有电脑,没有网络,无需写代码,工作上相关的完全放下......开心与父母妻儿过个年,那样的生活令Insus.NET现在还在留恋.. ...

  10. [转]终于找到全annotation配置springMVC的方法了(事务不失效)

    原文:http://icanfly.iteye.com/blog/778401 icanfly 写道 如果带上事务,那么用annotation方式的事务注解和bean配置,事务会失效,要将servic ...