`
抛出异常的爱
  • 浏览: 627373 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring配置Quartz例子

阅读更多
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!--起动Bean-->
 <bean id="z" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
 	<property name="triggers">
 		<list>
 	
			<ref bean="cronReportTrigger"/>
 		</list>
 	</property>
 </bean> 
<!--实际的工作Bean-->
  <bean id="courseService" class="com.spring.helloworld.CourseService"></bean>
<!--jobBean用于设定启动时运用的Bean与方法-->
 <bean id="scheduledReportJobDetail"  
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
	 <property name="targetObject">
	 	<ref  bean="courseService"/>	
	 </property>
	 <property name="targetMethod">
		 <value>sendCourseEnrollmentReport</value>
	 </property>
 </bean>
<!--定时器设定起动频率&启动时间我设的是每5秒起动一次 (0 0  4 * * ?每日四点起动....)-->
 <bean id="cronReportTrigger" 
class="org.springframework.scheduling.quartz.CronTriggerBean">
 <property  name="jobDetail"><ref bean="scheduledReportJobDetail"/>
 </property>
 <property name="cronExpression"><value>10,15,20,25,30,35,40,45,50,55 * * * * ?</value>  
</property>
 </bean>
 	
</beans>

测试
package com.spring.helloworld;


import java.io.FileNotFoundException;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;


import com.spring.hellow.LogInit;
import com.spring.hellow.QuestException;


public class TaskApp {

	public static void main(String[] args) throws BeansException, FileNotFoundException, QuestException, InterruptedException {
		new LogInit("WEB-INF/classes/com/spring/helloworld/log4j.properties");
		BeanFactory factory = new XmlBeanFactory(new FileSystemResource(
        "WEB-INF/classes/" +
        "com/spring/helloworld/" +
        "helloworld.xml"));
		factory.getBean("z");//为什么必须用这个方法触发呢不触发为什么不行呢?


	}
	

}
分享到:
评论
9 楼 fly_ever 2009-11-05  
这是我的一个测试,我配的2个任务。
spring 的配置:
	<!-- 与quartz有关的设置 -->
	<bean id="billJob" class="test.BillReliabilityJob"/>
	<bean id="exceptionJob" class="test.ExceptionJob"/>
	
	<bean id="billJobTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject">
			<ref bean="billJob"/><!-- 调用的Job类 -->
		</property>
		<property name="targetMethod">
			<value>run</value><!-- 调用的类中的方法 -->
		</property>
	</bean>
	<bean id="exceptionJobTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject">
			<ref bean="exceptionJob"/><!-- 调用的Job类 -->
		</property>
		<property name="targetMethod">
			<value>run</value><!-- 调用的类中的方法 -->
		</property>
	</bean>
	
	<bean id="billRunTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
		<property name="jobDetail">
			<ref bean="billJobTask"/>
		</property>
		<property name="cronExpression">
			<value>0/5 * * * * ?</value>
		</property>
	</bean>
	<bean id="ExceptionRunTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
		<property name="jobDetail">
			<ref bean="exceptionJobTask"/>
		</property>
		<property name="cronExpression">
			<value>10 * * * * ?</value>
		</property>
	</bean>
	
	<!-- 总管理类,如果lazy-init='false',则容器启动时就会执行调度程序-->
	<!-- 如果lazy-init='true',则需要实例化该bean才能执行调度程序            -->
	
	<bean id="billStartQuartz" lazy-init="false" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="billRunTime"/>
				<ref bean="ExceptionRunTime"/>
			</list>
		</property>
	</bean>


运行时,首先我采用MainTest 测试
public class MainTest extends TestCase {

	public void testJob(){
		System.out.println("start");
		ApplicationContext context = new FileSystemXmlApplicationContext(
		"./config/spring.xml");
		System.out.println("end");
	}
}

发现程序打印end后就结束了。
然后我用Main测试,可以正常执行。
public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("start");
		ApplicationContext context = new FileSystemXmlApplicationContext(
		"./config/spring.xml");
		System.out.println("end");
	}

}

job类的内容为:
public class ExceptionJob {

	public void run(){
		System.out.println("ExceptionJob running");
	}
}
8 楼 抛出异常的爱 2009-11-05  
fly_ever 写道
很奇怪,在main方法中能正常运行,
而在测试类中,即继承TestCase的类中写一个方法,运行上述代码,则启动不了调度。
这是为什么呢?


最好不要测试Quartz本身...

PS:你可以把有问题的代码发上来看看.
7 楼 fly_ever 2009-11-05  
很奇怪,在main方法中能正常运行,
而在测试类中,即继承TestCase的类中写一个方法,运行上述代码,则启动不了调度。
这是为什么呢?

6 楼 抛出异常的爱 2009-05-12  
jdk的版本
eclipse版本 project -> javacompiler的jdk版本
tomcat jdk 版本...
12616383 写道

Quarzt已经配置好&nbsp; tomcat 5.*启动报错&nbsp;&nbsp; 大佬 帮忙看下

严重: Error listenerStart
2009-5-8 16:00:39 org.apache.catalina.core.StandardContext start
严重: Context [/irdpcms] startup failed due to previous errors






5 楼 12616383 2009-05-08  
Quarzt已经配置好  tomcat 5.*启动报错   大佬 帮忙看下

严重: Error listenerStart
2009-5-8 16:00:39 org.apache.catalina.core.StandardContext start
严重: Context [/irdpcms] startup failed due to previous errors


代码:

<!--配置一个Job-->
	<bean id="testJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
			<property name="jobClass">
				<value>com.zfsoft.irdpcms.action.QuartzJob</value>
			</property>
			
			<property name="jobDataAsMap">
				<map>
					<entry key="pringThing">
						<value>this is the first Quarzt</value>
					</entry>	
					
					<entry key="printName">
						<value>leo</value>
					</entry>			
				</map>
			</property>
	</bean>
	
	<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
		<property name="jobDetail">
			<ref bean="testJobDetail"/>
		</property>
		
		<property name="startDelay">
			<value>10</value>
		</property>
		
		<property name="repeatInterval">
			<value>2000</value>
		</property>
		
		<property name="repeatCount">
			<value>20</value>
		</property>
		
	</bean>
	
	<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="autoStartup">
			<value>true</value>
		</property>
		
		<property name="triggers">
			<list>
				<ref bean="simpleTrigger"/>
			</list>
		</property>
	</bean>
	

4 楼 抛出异常的爱 2008-07-15  

谢谢
3 楼 sbe_steels 2008-07-05  
在web.xml配置spring的监听器就可以,如果还要硬编码的形式来获取Scheduler,可能不能完全成为定时器,或则定时任务。
<listener>
  <listener-class>
       org.springframework.web.context.ContextLoaderListener
  </listener-class>
</listener>
2 楼 julycool 2007-09-05  
设置lazy-init为false
1 楼 Godlikeme 2006-12-24  
factory.getBean("z");//为什么必须用这个方法触发呢不触发为什么不行呢?  
因为这个bean没有加载,scheduler没有实例化。如果自定义scheduler,还需要显示调用scheduler.start().或者再配置文件中声明。

相关推荐

    spring+quartz定时小例子

    在 Spring 中配置 Quartz 需要定义一个 `SchedulerFactoryBean`,它负责创建和管理 Quartz 的调度器。通过配置文件(通常是 `applicationContext.xml`),我们可以设置调度器的属性,例如: ```xml ...

    spring quartz简单例子

    4. **配置Quartz**:在Spring的配置文件中,我们需要定义`SchedulerFactoryBean`,设置数据源、job存储以及其它Quartz配置属性。例如,`triggers`和`jobs`可以通过XML配置文件来定义,或者使用`@Configuration`注解...

    超级简单Spring3 Quartz 例子

    接下来,我们需要在Spring的配置文件(如applicationContext.xml)中配置Quartz的相关bean,包括SchedulerFactoryBean、JobDetail和Trigger。例如: ```xml &lt;bean id="schedulerFactoryBean" class="org.spring...

    spring+quartz需要的4个jar包 不需要6个

    在配置完成后,你可以通过Spring的ApplicationContext来加载Quartz的相关配置,并使用Spring管理的bean作为Job执行器。这样,你可以在Spring的环境中无缝地使用Quartz进行任务调度。 在Quartz的配置中,你需要定义...

    Quartz+Spring定时触发器例子

    - 如何在Spring中配置Quartz - 如何创建和配置JobDetail和Trigger - Cron表达式的使用和理解 - 如何在Job类中注入依赖 - 如何启动和停止Scheduler - 如何调试和管理定时任务 总的来说,"Quartz+Spring定时触发器...

    spring和quartz的定时器的启动和停止例子

    2. **配置Quartz**:在Spring的配置文件(如applicationContext.xml)中,定义SchedulerFactoryBean,这是Spring管理Quartz Scheduler的主要方式: ```xml &lt;bean id="scheduler" class="org.springframework....

    spring注解Quartz定时执行功能

    在Spring配置文件(如applicationContext.xml)中添加以下配置: ```xml &lt;bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"&gt; ...

    spring-quartz简单实例

    在这个"spring-quartz简单实例"中,我们将探讨如何在Spring环境下配置和使用Quartz。 首先,我们需要引入Quartz和Spring的依赖。在Maven项目中,这通常通过在pom.xml文件中添加以下依赖来完成: ```xml ...

    Spring+Quartz实现任务调度的小例子

    在这个小例子中,我们看到了如何定义一个简单的Job和Trigger,并在Spring配置中进行集成。实际上,你可以根据需求定义多个Job和Trigger,构建出复杂的调度逻辑。在实际项目中,这样的功能可以用于定时数据同步、定时...

    quartz入门例子,spring集成配置使用

    Spring集成quartz跑定时任务实例 自己写的例子并为实现job 有测试的主函数,请参考...springCon.quartz文件夹下 为对上诉博客理解透彻 结合spring看其配置的相关信息 就可以明白。

    spring quartz例子

    总结来说,这个Spring Quartz例子是一个完整的定时任务解决方案,它演示了如何在Spring环境中集成Quartz,定义和调度任务。这个例子对于学习和实践Spring的定时任务管理具有很高的参考价值。通过深入理解并实践这个...

    spring整合quartz两种方式以及spring自带定时任务使用

    -- 配置Quartz的属性 --&gt; &lt;property name="configLocation" value="classpath:quartz.properties"/&gt; &lt;!-- 定义JobDetail --&gt; &lt;bean class="org.springframework.scheduling.quartz.JobDetailFactoryBean"&gt; ...

    quartz2.2.1 spring3.1.1

    此外,Spring 还可以通过`JobDetailBean`和`TriggerBean`来创建和配置 Quartz 对象。 例如,你可以创建一个`MyJob`类实现`org.quartz.Job`接口,然后在 Spring 配置文件中声明这个 Job 和相应的 Trigger: ```xml ...

    spring quartz定时任务demo

    通过这个例子,你可以快速学习到如何定义Job,如何配置Trigger,以及如何将它们与Spring的IoC容器结合,实现自动化任务调度。这是一个非常实用的起点,对于任何需要定期执行任务的Java项目来说,都是一个宝贵的参考...

    spring java 定时器 执行两次 quartz

    2. **配置错误**:Spring配置中的`@Scheduled`注解或Quartz配置可能设置了错误的触发策略,使得任务被重复触发。 3. **线程安全**:如果你的任务逻辑不是线程安全的,可能会因为并发执行导致问题。 4. **Spring重启*...

    使用spring的quartz定时器要用到的jar包

    2. `spring-context-support.jar`:Spring框架提供的上下文支持模块,包含对Quartz的支持,让你能在Spring容器中配置和管理Quartz任务。 3. `spring-beans.jar` 和 `spring-core.jar`:Spring的基本组件,用于定义...

    spring整合quartz定时发送邮件

    3. 在Spring配置文件中定义JobDetail和Trigger,设置任务的执行逻辑和触发时间。 4. 配置Quartz的相关属性,如数据源、调度器配置等。 理解并掌握这些知识点,可以让你在实际项目中灵活地实现定时任务,例如定时...

    Spring中Quartz的配置实例

    在Spring框架中集成Quartz是一款常见的任务...在Spring中配置Quartz,首先需要在项目的类路径下添加Quartz库,包括`quartz.jar`和对应的数据库驱动。接着,在Spring配置文件中声明Scheduler工厂Bean,例如: ```xml ...

    一个Spring+quartz的例子,希望对大家有帮助

    Spring+quartz 一个简单的 定时任务的例子,希望能对大家的学习有帮助。 最后,附:cronExpression配置说明 字段 允许值 允许的特殊字符 秒 0-59 , - * / 分 0-59 , - * / 小时 0-23 , - * / 日期 1-31 , - *...

    spring3 配置quartz定时任务的使用

    本篇文章将详细介绍如何在Spring 3.x版本中配置和使用Quartz进行定时任务的实现。 首先,我们需要理解Spring与Quartz结合的基本原理。Spring通过其`JobDetail`和`Trigger`接口来与Quartz进行交互,`JobDetail`定义...

Global site tag (gtag.js) - Google Analytics