国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

JavaMelody

2019-11-14 23:27:19
字體:
來源:轉載
供稿:網友
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的QuartzJavaMelody提供了...其實它也沒提供什么。關鍵是org.springframework.scheduling.quartz.SchedulerFactoryBean中有個exposeSchedulerInRepository,雖然注釋中提到不提倡使用,但是只要spring版本夠新就沒什么問題。

監控集成于spring的quartz只需要將該屬性設置為true(默認為false)。

然后進monitoring,顯示如下:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宝应县| 凤山市| 慈利县| 汝城县| 沁阳市| 泸西县| 东光县| 宝坻区| 秀山| 台北市| 昌平区| 宁强县| 安陆市| 闸北区| 潼关县| 烟台市| 景东| 邓州市| 和顺县| 卫辉市| 紫阳县| 青冈县| 团风县| 平舆县| 六枝特区| 阿拉善左旗| 搜索| 清水河县| 车致| 扶余县| 南靖县| 平顶山市| 砀山县| 余姚市| 蓝田县| 武汉市| 凉山| 屯留县| 宜兰市| 无锡市| 峡江县|