图片 9

框架神速入门,加多定期义务

spring3不支持quartz2“`java
一.业务调治的类(就是您想要做的政工的逻辑部门) public class QuartzTest {
public void quartzTest(){ System.out.println(“I 乐福 You, zhuzhu”); } }
二.写二个job public class RunJob extends QuartzJobBean{ private
QuartzTest quartztest;

quartz 增添按时职务,quartz加多

前不久都在做API接口,发掘有个别接口无法长时间追踪,但是有日常出错,所以供给做监察和控制,本来那些互连网运营也能够做的,可是发掘java里面也可能有很好的方法,最后决定还是在java之中完成。相当少说,直接上代码。

 

a.首先就是开创三个quartz-config.xml,里面配备必要运营的类以及艺术,定时的小运。

 

<beans xmlns=””
xmlns:xsi=””
xmlns:mvc=””
xmlns:context=””
xmlns:aop=””
xmlns:tx=””
xsi:schemaLocation=”

“>

<!– 要调用验卡的行事类 –>
<bean id=”sendChannel”
class=”main.java.ssm.sendchannel.controller.SendChannelController”></bean>
<!– 定义调用对象和调用对象的法子 –>
<bean id=”jobtask”
class=”org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean”>
<!– 调用的类 –>
<property name=”targetObject”>
<ref bean=”sendChannel”/>
</property>
<!– 调用类中的方法 –>
<!– <property name=”targetMethod”>
<value>work</value>
</property> –>
<property name=”targetMethod”>
<value>verifyInfo</value>
</property>
</bean>
<!– 定义触发时间 –>
<bean id=”doTime”
class=”org.springframework.scheduling.quartz.CronTriggerFactoryBean”>
<property name=”jobDetail”>
<ref bean=”jobtask”/>
</property>
<!– cron表达式 –>
<property name=”cronExpression”>
<value>0 0/30 * * * ?</value>
</property>
</bean>

<!– 总管理类 若是将lazy-init=’false’那么容器运维就能够进行调整程序
–>
<bean id=”startQuertz” lazy-init=”false” autowire=”no”
class=”org.springframework.scheduling.quartz.SchedulerFactoryBean”>
<property name=”triggers”>
<list>
<ref bean=”doTime”/>
</list>
</property>
</bean>
</beans>

 

b.接着就在web.xml配置quartz-config.xml的调用

<!– 配置上游接口监察和控制 –>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/spring/quartz-config.xml</param-value>
</context-param>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

 

c.首要的即是方法的格式,lz开掘方法有再次来到值的话是未曾章程调用成功的,希望有大咖能消除。……——……

public class SendChannelController
{

public void verifyInfo()
{
log.info(“Quartz的职责调节!!!”);
}

}

d.到这里具有的代码都写好了,当然需要测试!!!

public static void main(String[] args)
{
System.out.print(“Test start.”);
ApplicationContext context = new
ClassPathXmlApplicationContext(“spring/quartz-config.xml”);
//假使布置文件大校startQuertz bean的lazy-init设置为false 则不用实例化
//context.getBean(“startQuertz”);
System.out.print(“Test end..\n”);
}

e.测试结果一切不奇怪,能够运营服务了。那时反应计时器就能够随服务协同运维了。

加多定期职务,quartz加多近些日子都在做API接口,开采有个别接口不能够长期追踪,可是有常常出错,所以供给做监察和控制,本来那么些网络运营…

public QuartzTest getQuartztest() {
    return quartztest;
}

public void setQuartztest(QuartzTest quartztest) {
    this.quartztest = quartztest;
}

@Override
protected void executeInternal(JobExecutionContext arg0)
        throws JobExecutionException {

    quartztest.quartzTest();
}

转载  

} 3.在xml中配置 <beans
xmlns=””
xmlns:xsi=””
xsi:schemaLocation=”
;
//注册三个调节 <bean id=”quartztest”
class=”quartz.test.manager.QuartzTest” />

 Spring的scheduling.quartz包中对Quartz框架进行了包装,使得开垦时不用写任何QuartSpring的代码就足以兑现定期任务。Spring通过JobDetailBean,MethodInvokingJobDetailFactoryBean完结Job的定义。后者特别实用,只需点名要运转的类,和该类中要启动的方法就可以,Spring将自动生成符合Quartz供给的JobDetail。

<!-- Spring Quartz -->
//配置一个job,注意class中的类
<bean name="quartzJob" class="org.springframework.scheduling.quartz.JobDetailBean">
             //name="jobClass"这个名字不能随便更改, value值就是写的job
    <property name="jobClass" value="quartz.test.job.RunJob" />

    <property name="jobDataAsMap">
      <map>//key的值要与job的字段名称对应, value-ref是你注册的调度的id名称
        <entry key="quartztest" value-ref="quartztest" />
      </map>
    </property>

</bean>

<!-- Cron Trigger, run every 5 seconds -->
//配置触发器,有两种方式,这是我喜欢的一种方式
<bean id="cronTrigger" 
            class="org.springframework.scheduling.quartz.CronTriggerBean">
             //name="jobDetail"一样的name的值不可以随意改变, ref的值是注册的job的名字
    <property name="jobDetail" ref="quartzJob" />
    //配置的时间规则,每五秒钟跑一次任务
    <property name="cronExpression" value="0/5 * * * * ?" />

</bean>
             //配置调度工厂
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<!--  <property name="jobDetails">
        <list>
            <ref bean="runMeJob" />
        </list>
    </property> -->

         //name的值同样不要更改,把触发器的名字配置上
    <property name="triggers">
        <list>
            <ref bean="cronTrigger" />
        </list>
    </property>
</bean>

在上一篇作品《Quartz 框架连忙入门(叁)》中大家将示例迁移到Web意况下了,但选择的是Quartz的启航编制,那一篇中我们将让Web服务器运维Spring,通过Spring的配备文件来张开职务的调治

</beans> 4.测试类 public class QuartzTestRun { public static void
main(String [] args){ new
ClassPathXmlApplicationContext(“Spring-Quartz.xml”); } } “`

一,成立2个Web项目,加入spring.jar,quartz-一.陆.0.jar,commons-collections.jar,jta.jar ,commons-logging.jar这多少个包.

     二,创设一个类,在类中增加一个方法execute,我们将对那个办法进行定期调解.

图片 1

package com.vista.quartz;

import java.util.Date;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class HelloWorld 
{
    private static Log logger = LogFactory.getLog(HelloWorld.class);//日志记录器
    public HelloWorld()
    {
    }
    public void execute()
    {
        logger.info(“Kick your ass and Fuck your mother! – ” + new Date()); 
    }
}

图片 2

2.
Spring配置文件applicationContext.xml 修改如下:

图片 3

<?xml version=”1.0″ encoding=”UTF-8″?>
<beans
    xmlns=””
    xmlns:xsi=””
    xsi:schemaLocation=” ;

    <!– 要调用的劳作类 –>
    <bean id=”quartzJob” class=”com.vista.quartz.HelloWorld”></bean>
    <!– 定义调用对象和调用对象的格局 –>
    <bean id=”jobtask” class=”org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean”>
        <!– 调用的类 –>
        <property name=”targetObject”>
            <ref bean=”quartzJob”/>
        </property>
        <!– 调用类中的方法 –>
        <property name=”targetMethod”>
             <value>execute</value>
        </property>
    </bean>
    <!– 定义触发时间 –>
    <bean id=”doTime” class=”org.springframework.scheduling.quartz.CronTriggerBean”>
        <property name=”jobDetail”>
            <ref bean=”jobtask”/>
        </property>
        <!– cron表达式 –>
        <property name=”cronExpression”>
            <value>10,15,20,25,30,35,40,45,50,55 * * * * ?</value>
        </property>
    </bean>
    <!– 总管理类 假设将lazy-init=’false’那么容器运维就能试行调整程序  –>
    <bean id=”startQuertz” lazy-init=”false” autowire=”no” class=”org.springframework.scheduling.quartz.SchedulerFactoryBean”>
        <property name=”triggers”>
            <list>
               <ref bean=”doTime”/>
            </list>
        </property>
    </bean>
</beans>

图片 4

三,先在调节新北对地点的代码举行测试,大家要做的只是加载Spring的配置文件就足以了,代码如下:

图片 5

package com.vista.quartz;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test 
{
    public static void main(String[] args) 
    {
         System.out.println(“Test start.”);
            ApplicationContext context = new ClassPathXmlApplicationContext(“applicationContext.xml”);
            //假如配置文件中校startQuertz bean的lazy-init设置为false 则毫不实例化
            //context.getBean(“startQuertz”);
         System.out.print(“Test end..”);
    }
}

图片 6

四,然后将Web.xml修改如下,让tomcat在运转时去开端化Spring:

图片 7

<?xml version=”1.0″ encoding=”UTF-8″?>
<web-app version=”2.4″ 
    xmlns=”” 
    xmlns:xsi=”” 
    xsi:schemaLocation=” 
    ;
     <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/classes/applicationContext.xml
        </param-value>
    </context-param> 
    
    <servlet>
        <servlet-name>SpringContextServlet</servlet-name>
        <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet> 

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

图片 8

5,最终运转Tomcat,测试结果如下图所示:

图片 9