zoukankan      html  css  js  c++  java
  • JavaMelody 常用配置

    一直没怎么关注javaMelody这个东西。
    自己写东西的时候想弄点监控,于是把javaMelody装进去了。
    看了文档几乎全是法语,在此记录一些常用的配置。

    首先依赖添加如下:

    <dependency>
        <groupId>net.bull.javamelody</groupId>
        <artifactId>javamelody-core</artifactId>
        <version>1.50.0</version>
    </dependency>
    


    说说最基本的配置: net.bull.javamelody.MonitoringFilternet.bull.javamelody.SessionListener
    这两个个必须有, MonitoringFilter用于监控的Servlet Filter,需要声明在webapp的web.xml中。
    而SessionListener是用于监听HTTP Session的,另外也监听Servlet Context,需要声明在webapp的web.xml中。

    /**
     * Filtre de servlet pour le monitoring.
     * C'est la classe de ce filtre qui doit être déclarée dans le fichier web.xml de la webapp.
     * @author Emeric Vernat
     */
    public class MonitoringFilter implements Filter{
        //...
    }
    


    web.xml中配置如下:

    <filter>
      <filter-name>monitoring</filter-name>
      <filter-class>net.bull.javamelody.MonitoringFilter</filter-class>
    </filter>
    <filter-mapping>
      <filter-name>monitoring</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>
    <listener>
      <listener-class>net.bull.javamelody.SessionListener</listener-class>
    </listener>
    


    如果mvc框架使用的是struts,javaMelody提供了net.bull.javamelody.StrutsInterceptor

    /**
     * Interceptor Struts 2 pour avoir les temps moyens des actions Struts.
     * {@link StrutsInterceptor "http://struts.apache.org/2.1.6/docs/interceptors.html"}
     * @author Emeric Vernat
     */
    public final class StrutsInterceptor extends AbstractInterceptor{
        //..
    }
    


    集成了AbstractInterceptor,直接放到struts2的interceptor tag里面reg上就可以了:

    <package name="default" extends="struts-default" >
        <interceptors>
                <interceptor name="monitoring" class="net.bull.javamelody.StrutsInterceptor"/>      
                <interceptor-stack name="myStack">
                        <interceptor-ref name="monitoring"/>
                        <interceptor-ref name="defaultStack"/>
                </interceptor-stack>
        </interceptors>
    
        <default-interceptor-ref name="myStack"/>
    </package>
    


    关于数据源的监控,虽然说作者提供了一个net.bull.javamelody.JdbcDriver,但通常会使用dbcp,c3p0什么的,然后再把它注入到TransactionMananger什么的来做点事务管理。

    那就用net.bull.javamelody.SpringDataSourceFactoryBean,把数据源给监控代理做监控了。 比如这样,只是把声明好的数据源注入进去:

    <bean id="mainDataSource" class="net.bull.javamelody.SpringDataSourceFactoryBean">
        <property name="targetName" value="_mainDataSource" />
    </bean>
    


    这样配置后我试着执行了一次SQL,它也的确监控到了。 但是我声明的net.bull.javamelody.MonitoringSpringAdvisor却什么也没记录。

    说的就是这个东东:


    关于aop,可以使用net.bull.javamelody.MonitoringSpringAdvisor
    官网给了三种配置方法,我在这里也举个多pointcut栗子:

    <bean id="facadeMonitoringAdvisor" class="net.bull.javamelody.MonitoringSpringAdvisor">
        <property name="pointcut">
            <bean class="org.springframework.aop.support.JdkRegexpMethodPointcut">
                <property name="patterns">
                    <list>
                        <value>com.xyz.someapp.service.MonitoringPointcut0.*</value>
                        <value>com.xyz.someapp.service.MonitoringPointcut1.*</value>
                        <value>com.xyz.someapp.service.MonitoringPointcut2.*</value>
                    </list>
                </property>
            </bean>
        </property>
    </bean>
    


    光配置这个是不会生效的。
    之前配置数据源的时候官网给出的文档中说道:如果数据源配置于spring context中,请务必将classpath:net/bull/javamelody/monitoring-spring.xml加入contextConfigLocation中。
    但我并没有加上,问题是确实监控到了SQL的执行于是没太关心。
    但这次没监控到spring就要把这个加上了。

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:net/bull/javamelody/monitoring-spring.xml
            classpath*:/applicationContext*.xml
        </param-value>
    </context-param>
    


    那这个monitoring-spring.xml是什么?
    先来看看他的内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
        <bean id="monitoringAdvisor" class="net.bull.javamelody.MonitoringSpringAdvisor">
            <property name="pointcut">
                <bean class="net.bull.javamelody.MonitoredWithAnnotationPointcut"/>
            </property>
        </bean>
        <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>
        <bean id="springDataSourceBeanPostProcessor" class="net.bull.javamelody.SpringDataSourceBeanPostProcessor">
            <!--
            <property name="excludedDatasources">
                <set>
                    <value>excludedDataSourceName</value>
                </set>
            </property>
            -->
        </bean>
        <!--
        <bean id="wrappedDataSource" class="net.bull.javamelody.SpringDataSourceFactoryBean">
            <property name="targetName" value="targetDataSource" />
        </bean>
        -->
    </beans>
    


    MonitoringSpringAdvisor继承了默认的DefaultPointcutAdviso,并在自己的constructor中设置了一个Advice——MonitoringSpringInterceptor以简化配置。
    MonitoredWithAnnotationPointcut则是Pointcut的实现,它让所有MonitoredWithSpring使用MonitoredWithSpring注解和所有类都通过。


    另外定时任务框架我使用的是Quartz, 如果仅仅是Quartz而已,JavaMelody会自动监控,不需要任何配置。
    但如果是使用spring scheduling的Quartz JavaMelody提供了...其实它也没提供什么。
    关键是org.springframework.scheduling.quartz.SchedulerFactoryBean中有个exposeSchedulerInRepository,虽然注释中提到不提倡使用,但是只要spring版本够新就没什么问题。

    监控集成于spring的quartz只需要将该属性设置为true(默认为false)。

    然后进monitoring,显示如下:

  • 相关阅读:
    字王谈M1字形与个人云字库
    想让网站销量爆涨?你离成功只差一个出色的购物车设计
    学习JavaScript很吃力?开发五年经验带你轻松上路!
    摹客—— 自动生成你的颜色规范
    【求职,不求人】2019最全Web设计师面试问题,助你轻松拿下面试
    交易类APP原型设计分享
    全是宝!20款优质高效的在线协作工具任你挑,就是这么强大!
    灵感专题—2019年优秀网页设计作品赏析#4月
    2019年最实用的导航栏设计实践和案例分析全解
    摹客标注:自动标注一键生成,手动标注自由补充
  • 原文地址:https://www.cnblogs.com/jinkora/p/4366059.html
Copyright © 2011-2022 走看看