JAMon简介

JAMon的全名是:Java Application Monitor。它是一个小巧的,免费的,高性能的,线程安全的性能监测工具。

它可以用来测定系统的性能瓶颈,也可以用来监视用户和应用程序之间的交互情况。

Jamon主要是用来检测jee的应用程序。

JAMon集成到项目中

假设现在有一个项目名为bookShop,目录结构如下:

bookshop

  java resources

    src

      com.allen.bookshop

        filter

          PageMonFilter

  webContent

    jamon

    WEB-INF

      web.xml 

1.到官网去下载两个包:jamon.rar和jamon-sample.rar

http://sourceforge.net/projects/jamonapi/files/

jamon.rar里面有源码和api。

jamon-sample.rar里面有基本示例。

解压jamon-sample.rar,把解压后的文件jamon直接拷贝到webContent下,具体文件如下图:

2.把解压jamon-sample.rar后jamon文件里的webContent下的lib下的jar包,拷贝到自己工程的lib下。

3.新建一个PageMonFilter类,如上目录结构:

  1. import java.io.IOException;
  2.  
  3. import javax.servlet.FilterChain;
  4. import javax.servlet.FilterConfig;
  5. import javax.servlet.ServletException;
  6. import javax.servlet.ServletRequest;
  7. import javax.servlet.ServletResponse;
  8. import javax.servlet.http.HttpServletRequest;
  9.  
  10. import com.jamonapi.JAMonFilter;
  11. import com.jamonapi.MonKeyImp;
  12. import com.jamonapi.Monitor;
  13. import com.jamonapi.MonitorFactory;
  14.  
  15. public class PageMonFilter extends JAMonFilter
  16. {
  17. private static final long serialVersionUID = 5746197114960908454L;
  18.  
  19. private FilterConfig filterConfig = null;
  20.  
  21. public void init( FilterConfig filterConfig ) throws ServletException
  22. {
  23. this.filterConfig = filterConfig;
  24. }
  25.  
  26. public void destroy()
  27. {
  28. this.filterConfig = null;
  29. }
  30.  
  31. public void doFilter( ServletRequest request, ServletResponse response,
  32. FilterChain filterChain ) throws IOException, ServletException
  33. {
  34. Monitor allPages = MonitorFactory.start( new MonKeyImp(
  35. "jammon.webui.allPages", getURI( request ), "ms." ) );
  36. Monitor monitor = MonitorFactory.start( getURI( request ) );
  37.  
  38. try
  39. {
  40. filterChain.doFilter( request, response );
  41. }
  42. finally
  43. {
  44. monitor.stop();
  45. allPages.stop();
  46. }
  47. }
  48.  
  49. protected String getURI( ServletRequest request )
  50. {
  51. if ( request instanceof HttpServletRequest )
  52. {
  53. return ((HttpServletRequest)request).getRequestURI();
  54. } else
  55. {
  56. return "Not an HttpServletRequest";
  57. }
  58. }
  59. }

4.在web.xml上增加如下代码:

  1. <filter>
  2. <filter-name>JAMonFilter</filter-name>
  3. <filter-class>com.allen.bookshop.filter.PageMonFilter</filter-class>
  4. </filter>
  5. <filter-mapping>
  6. <filter-name>JAMonFilter</filter-name>
  7. <url-pattern>/*</url-pattern>
  8. </filter-mapping>

5.增加jamon_bean.xml文件, 用于配置你要监听哪些类。action方法不用配置,默认会监听。

  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" xmlns:osgi="http://www.springframework.org/schema/osgi"
  4. xmlns:tx="http://www.springframework.org/schema/tx"
  5. xsi:schemaLocation="
  6. http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/osgi
  9. http://www.springframework.org/schema/osgi/spring-osgi.xsd
  10. http://www.springframework.org/schema/tx
  11. http://www.springframework.org/schema/tx/spring-tx-2.0.xsd ">
  12.  
  13. <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
  14. <property name="beanNames">
  15. <list>
  16. <value>bookshopService</value>
  17. </list>
  18. </property>
  19. <property name="interceptorNames">
  20. <list>
  21. <value>jamonInterceptor</value>
  22. </list>
  23. </property>
  24. </bean>
  25.  
  26. <bean id="jamonInterceptor" class="org.springframework.aop.interceptor.JamonPerformanceMonitorInterceptor">
  27. </bean>
  28. </beans>

6.在log4j.properties中添加如下配置:

  1. log4j.logger.org.springframework.aop.interceptor.JamonPerformanceMonitorInterceptor = TRACE

重新启动工程。

至此,配置完成,现在可以访问http://localhost:8080/bookshop/jamon/menu.jsp访问jamon了

    

JAMon监控web工程方法的调用性能的更多相关文章

  1. 监控web服务方法

    本地监控:端口  netstat -anltup | grep 80  nmap ip -p 80 telnet ip:80 lsof -i :80|wc -l 进程 ps -ef| grep ngi ...

  2. JAMon监控SQL执行时间

    JAMon监控web工程方法的调用性能 http://www.cnblogs.com/zfc2201/p/3786365.html 这往往篇文章主要告诉大家如何监控web方法调用时间,在这个基础这上, ...

  3. 在javaEE下学习web(在eclipse中开发动态的WEB工程,servlet的环境搭建,及servlet的一些方法)

    一个简便的方法实现javaee版的eclipse开发动态的WEB工程(javaWEB项目)1.把开发选项切换到javaEE2. 可以在window->shou view 中找到package e ...

  4. zabbix如何监控WEB应用性能

    HTTP服务目前最流行的互联网应用之一,如何监控服务的健康状态对系统运维来说至关重要.   Zabbix本身提供了对WEB应用程序的监控,比如监控WEB程序的Download Speed,Respon ...

  5. 根据wsdl文件,Web工程自动生成webservice客户端调用

    根据wsdl文件,Web工程自动生成webservice客户端调用 1,工具:带有webservice插件的eclips 2,步骤: (1),新建一个Web工程:WSDLTest (2),浏览器访问W ...

  6. zabbix 监控web网站性能

    一直在纠结用什么实例来给大家演示呢?想来想去还是官方的好,那我们怎么用zabbix监控web性能和可用性呢?我们这边分为几个步骤:打开网站.登陆.登陆验证.退出,一共4个小step,看实例. 检测流程 ...

  7. Eclipse动态web工程(Dynamic Web Project)添加jar文件的正确方法

    Eclipse中,创建了动态web工程之后,如果需要添加新的jar文件,有两种方法.第一种是配置工程的“build path”,第二种则是将jar文件放在工程目录下的“/WebContent/WEB- ...

  8. 使用AdvancedInstaller打包web工程设置tomcat端口的方法

    原文:使用AdvancedInstaller打包web工程设置tomcat端口的方法 1.首先,要把你要打包的tomcat下的server.xml文件删掉,因为tomcat自带的serv ...

  9. 自学Zabbix4.1 zabbix监控web服务器访问性能

    自学Zabbix4.1 zabbix监控web服务器访问性能 使用Zabbix实现对web性能的监控,通过它可以了解web站点的可用性以及性能.最终将各项指标绘制到图形中,这样我们可以了解到一个站点的 ...

随机推荐

  1. 使用SpringMVC解决Ajax跨域问题

    package com.mengyao.system.filter; import java.io.IOException; import javax.servlet.FilterChain; imp ...

  2. HDU1284 钱币兑换问题

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  3. socket中的函数遇见EINTR的处理【转】

    转自:http://blog.chinaunix.net/uid-21501855-id-4490453.html 这几天,写服务器代码过程当中,遇见EINRT信号的问题,我是借鉴 <unp & ...

  4. springboot 全局异常处理

    springboot 全局异常处理 研究了半天springboot的全局异常处理,虽然还是需要再多整理一下,但是对于常见的404和500足以可以区分开,能够根据这两个异常分别处理 首先配置视图解析路径 ...

  5. 带你入门代理模式/SpringAop的运行机制

    SpringAop 是spring框架中最重要的一项功能之一,同时也是企业级开发记录事物日志等不可或缺的一部分,如果说你的系统需要记录用户访问接口的操作,那SpringAop是很完美的了,当然,拦截器 ...

  6. oracle创建用户赋予权限,删除权限

    --删除用户及及用户下的所有数据 drop user xxx cascade; --创建用户赋予密码 ; --赋予权限 grant dba to xxx; --删除权限 revoke dba from ...

  7. [BZOJ4199][Noi2015]品酒大会 树形DP+后缀自动机

    由于要找后缀的前缀,所以先用反串建立SAM. link边组成了后缀树. 两个子串的最长公共前缀是LCA的step 树形dp即可. #include<iostream> #include&l ...

  8. django 项目使用setting文件里定义的变量方法

    1.在Django项目的settings文件里定义里变量 REDIS_CONN = { 'HOST':'127.0.0.1', 'PORT':6379, 'DB':0,} 2.函数需要使用settin ...

  9. Codeforces 810 B. Summer sell-off

    B. Summer sell-off   time limit per test 1 second memory limit per test 256 megabytes input standard ...

  10. 2017 ACM-ICPC 亚洲区(青岛赛区)网络赛 1010

    #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #inclu ...