博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaMelody监控spring、struts
阅读量:6192 次
发布时间:2019-06-21

本文共 5425 字,大约阅读时间需要 18 分钟。

前言

  前面讲过了,L。

  这里继续讲解一下如何监控struts和spring。

  手码不易,转载请注明:

  由于spring的理论并不扎实,监控spring又是依靠sring的面向切面AOP技术来做的,因此在配置的时候虽然参照官方文档,但是仍然无法获得监控数据。这里先说一下简单的struts的监控。

  Struts监控

  Struts的监控相对来说要简单多了,只要按照下面的步骤,肯定是没有问题的。

  第一步,导入必要的jar包,需要的jar包前面已经提到过了。

  一个是javamelody.jar,另一个是jrobin-x.jar

  第二步,需要在web.xml中添加监控对应的过滤器

1 
2
monitoring
3
net.bull.javamelody.MonitoringFilter
4 5
6
log
7
true
8
9
10
11
monitoring
12
/*
13
14 15
16
net.bull.javamelody.SessionListener
17

  当然不要忘记struts自己的过滤器

1 
2
struts
3
org.apache.struts2.dispatcher.FilterDispatcher
4 5
6
struts.action.extension
7
action
8
9
10
11
struts
12
/*
13

  第三步,在struts.xml中添加默认的package,这个package提供了默认的拦截器

1 
2
3
4
5
6
7
8
9
10
11
12

  其他的package比如sttuts的包,都要继承这个default的包。

1 
2
3
/error.jsp
4
/success.jsp
5
6 7
8
/error.jsp
9
/searchSuccess.jsp
10
11 12
13
/error.jsp
14
/hibernateSuccess.jsp
15
16 17

  上面三步,就算是配置完了。

  如果不触发监控事件,比如点击某些东西进行响应跳转,使用struts,那么是监控不到数据的。虽然有显示对应的图片,但是图片上的数据都是0,Nan或者下方的表为空,这些都是没有触发监听事件的原因。

  Spring监控

  JavaMelody针对于spring的监控是到方法级别的,我们可以监控到某个类的某个方法,因此需要使用到AOP里面的pointcut进行监听。

  下面看一下主要的监听配置:

  第一步,依然是导入必备的jar包,上面说的两个,不再重复了。

  第二步,加载monitoring-spring.xml以及我们自己的applicationContext.xml配置文件。

  如果想要在加载web.xml的时候读取spring的配置文件,需要实现一个监听器

1 
2
3 org.springframework.web.context.ContextLoaderListener4
5

  然后在web.xml中,添加spring文件路径。通过这只上下文参数来设置

1 
2
contextConfigLocation
3
4 classpath:net/bull/javamelody/monitoring-spring.xml5 /WEB-INF/classes/bean.xml6
7

  上面第一行,定义了监控应用的spring配置文件,下面是我们自己的spring的配置文件。

  第三步,通过正则表达式,定位方法

1 
2
3
4
5
6
7

  这里面主要是使用了JdkRegexpMethodPointcut,也就是正则表达式定位业务方法。下面的参数可能是pattern或者patterns,参数

    com.test.*.* 意思是对应com.test包下的所有类的所有方法

    com.test.*.doGet 意思是对应com.test包下所有类的叫doGet的方法

    .*Test.* 意思是所有以Test结尾的类的所有方法

  具体的配置详情,还需要去学习一下AOP中关于切入点pointcut的使用。如果不会的话,多看一下相关的知识吧。

  然后就是针对想要监控的bean,添加这个拦截器:

1 
2
3
4
5
6
7
facadeMonitoringAdvisor
8
9
10

  这样在使用ProxyFactoryBean的时候,就会自动调用拦截器interceptorNames,定位到facadeMonitoringAdvisor中的方法,并在方法前后出发net.bull.javamelody.MonitoringSpringAdvisor,进行信息的监控。

  相应切面的编程代码这里也直接附上,有兴趣的可以运行试验下,主要是理解这个思想,就可以监控自己感兴趣的业务了。

1 people.java 2 public class People{ 3     // 讲话 4      public void speak() { 5          System.out.println("Hello,我是People!"); 6      } 7      // 跑步 8      public void Running() { 9          System.out.println("我在跑……跑…………逃……");10      }11      // 恋爱12      public void Loving() {13         System.out.println("我在和MM恋爱……别来打搅我!");14      }15     // 死亡16      public void died() {17          System.out.println("完了,我死了");18      }19  }20 21 advice类22 public class LogerPeople implements MethodBeforeAdvice {23  24  public void before(Method method, Object[] args, Object target)25    throws Throwable {26   System.out.println(target.getClass().getSimpleName() + "正在" +27  method.getName()+ "!");28   System.out.println("before!________________");29  30  }31 } 32 33 TestMain34 public class TestMain {35    36     public static void main(String[] args) {37         ApplicationContext ac = new ClassPathXmlApplicationContext(38                 "bean1.xml");39  40         //通过ProxyFactoryBean获取IComputer接口实现类的实例41         People c = (People) ac.getBean("ProxyFactoryBean");42         c.speak();43         c.Running();44         c.Loving();45         c.died();46     }47 }  48 49 50 spring配置文件51 
52
53 54
55
56
57
58
59
60
DefaultAdvisor
61
62
63
64 65
66
67
68
69
70
71
72
.*spea.*
73
.*ing
74
.*di.*
75
76
77
78

  我捣鼓了一天半的时间,一直都监控不到数据,就是因为虽然配置了默认的拦截器,但是一直都没有对拦截器进行触发响应。因此一直都没有调用到这个监控类,也就当然没有监控信息出现了。

  总结起来,还是因为没有理解spring AOP的原理,以后会补上spring的相关学习。

本文转自博客园xingoo的博客,原文链接:,如需转载请自行联系原博主。
你可能感兴趣的文章
关于混合应用开发的未来的一些思考
查看>>
Linux系统怎么查看网卡的UUID
查看>>
test
查看>>
用dockerfile配置生成docker image并实现容器部署
查看>>
重启Oracle 11g RAC记录
查看>>
postfix安装记录四-防病毒
查看>>
Linux的计划任务--crontab
查看>>
python 中字符串大小写转换
查看>>
Bitmap妙用
查看>>
域环境配置文件迁移
查看>>
三星拟调整卖场产品比例发力3D和Smart
查看>>
使用Fluentd和MongoDB构建日志收集系统
查看>>
js实现复制到剪切板,兼容所有浏览器
查看>>
postgresql自增字段初始值的设定
查看>>
H3C设备之端口绑定
查看>>
备忘:学习phalcon api方法
查看>>
wmic教程 命令收集
查看>>
MySQL MyISAM/InnoDB高并发优化经验
查看>>
Install Oracle Java Runtime (JRE) 7 in Ubuntu 1...
查看>>
动态规划的基本方法---动态规划和静态规划的关系
查看>>