spring定时任务在监控小工程中的应用

接着上一篇继续,瞬时的服务器硬件使用数据是应用在页面展示中的。如果要做统计还需要定时执行任务获取多个时间点上的数据,以便进行进一步的分析和总结。这里用到得就是spring的定时任务。

需要注意的点是要带quartz-1.6.0.jar这个包。

定时任务的管理是在XML中进行的,这里独立出一个applicationContext_quartz.xml。

基本的监控要完成三项任务:

1.定时采集数据。

2.根据采集的数据进行分析得到报告。

3.把报告作为EMAIL的内容(或附件)发送给指定的人。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
	    <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序  -->  
        <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
            <property name="triggers">  
                <list>  
                    <ref bean="countInfo"/> 
                    <ref bean="createReport"/>  
                    <ref bean="sendEmail"/>  
                </list>  
            </property>  
        </bean>  


		<!-- 定时查询系统资源,并写入文件 -->
        <bean id="contInfoJobTask" class="com.xxx.monitor.task.CountServerInfoTask"></bean>  
        <bean id="contInfoJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
            <property name="targetObject">  
                <ref bean="contInfoJobTask"/>  
            </property>  
            <property name="targetMethod">  
                <value>countInfo</value>  
            </property>  
        </bean>  
        <bean id="countInfo" class="org.springframework.scheduling.quartz.CronTriggerBean">  
            <property name="jobDetail">  
                <ref bean="contInfoJob"/>  
            </property>  
            <property name="cronExpression">  
               <value>0 10 0/1 * * ?</value><!-- 0:10,1:10,2:10.... -->
            </property>  
        </bean>  
        
        <!-- 定时从文件中统计数字,生成报告 -->
        <bean id="reportJobTask" class="com.xxx.monitor.task.CreateReportTask"></bean>  
        <bean id="reportJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
            <property name="targetObject">  
                <ref bean="reportJobTask"/>  
            </property>  
            <property name="targetMethod">  
                <value>createReport</value>  
            </property>  
        </bean>  
        <bean id="createReport" class="org.springframework.scheduling.quartz.CronTriggerBean">  
            <property name="jobDetail">  
                <ref bean="reportJob"/>  
            </property>  
            <property name="cronExpression">  
                <value>0 5 0 * * ?</value> <!-- 00:05 -->
            </property>  
        </bean>  
        
        <!-- 定时发送邮件 -->
        <bean id="emailJobTask" class="com.xxx.monitor.task.SendMailTask"></bean>  
        <bean id="emailJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
            <property name="targetObject">  
                <ref bean="emailJobTask"/>  
            </property>  
            <property name="targetMethod">  
                <value>sendMail</value>  
            </property>  
        </bean>  
        <bean id="sendEmail" class="org.springframework.scheduling.quartz.CronTriggerBean">  
            <property name="jobDetail">  
                <ref bean="emailJob"/>  
            </property>  
            <property name="cronExpression">  
                 <value>0 15 0 * * ?</value> <!-- 0:15 -->
            </property>  
        </bean> 
</beans>

 

你可能感兴趣的:(spring)