`

利用spring的ApplicationContext在程序中唤醒quartz的job

阅读更多

利用spring的ApplicationContext在程序中唤醒quartz的job

 

1.AppService:一个持有ApplicationContext的单列
2.timerContext.xml quartz定时器配置文件
3.唤醒job代码


请注意红色部分

3.唤醒job代码

AppService.setContext(new ClassPathXmlApplicationContext("classpath:atf/config/spring/applicationContext.xml"));
CronTriggerBean trigger = (CronTriggerBean) AppService.getService(CronTriggerBean.class,"atf.ticket.pnrChkTrigger");
System.out.println(trigger.getNextFireTime());
org.quartz.Scheduler scheduler=(org.quartz.impl.StdScheduler)AppService.getContext().getBean("schedulerFactoryService");
JobDetail job=trigger.getJobDetail();
scheduler.triggerJob(job.getName(),job.getGroup());

 2.quartz定时器配置文件

<!-- 定时器 -->
	<bean id="schedulerFactoryService" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="atf.ticket.pnrChkTrigger" /> 
			</list>
		</property>
	</bean>
	
	<!--pnr 自动审核 1小时一次 -->
	<bean id="atf.ticket.pnrChkTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
		<property name="jobDetail">
			<ref bean="atf.ticket.pnrChkTask" />
		</property>
		<property name="cronExpression">
			<value>0 0 0/1 * * ?</value>
		</property>
	</bean>
	<bean id="atf.ticket.pnrChkTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject">
			<ref bean="atf.pnr.pnrAutoCheckProcesser" />
		</property>
		<property name="targetMethod">
			<value>checkPnr</value>
		</property>
		<property name="concurrent">
			<value>false</value>
		</property>
	</bean>

 
 1.AppService:一个持有ApplicationContext的单列

public class AppService
{
    private AppService()
    {
    }

    private static ApplicationContext context = null;

    public static ApplicationContext getContext()
    {
	if (context == null)
	    context = new ClassPathXmlApplicationContext("classpath:atf/config/spring/applicationContext.xml");
	return context;
    }

    public static void setContext(ApplicationContext aContext)
    {
	context = aContext;
    }

    public static <T> Object getService(Class<T> type, final String service)
    {
	return getContext().getBean(service);
    }

    public static void autowireService(Object bean)
    {
	((AbstractApplicationContext) context).getBeanFactory().autowireBeanProperties(bean,
		AutowireCapableBeanFactory.AUTOWIRE_BY_NAME, false);
    }

    public static Statistics getStatistics()
    {
	SessionFactory sessionFactory = (SessionFactory) getContext().getBean("hibernateSessionFactory");
	Statistics statistics = sessionFactory.getStatistics();
	return statistics;
    }
}

  

分享到:
评论

相关推荐

    spring3.0 + Quartz1.52 + applicationContext.xml

    在IT行业中,Spring框架是Java企业级应用开发的首选,而Quartz则是一个强大的作业调度库,用于在应用程序中执行定时任务。这个压缩包“spring3.0 + Quartz1.52 + applicationContext.xml”显然是一个关于如何在...

    SpringQuartz的使用文档

    SpringQuartz是一个强大的任务调度框架,它在Java应用程序中用于自动化执行特定任务,如定时生成文件、统计数据或执行后台清理工作。Quartz是开源的,具有高度灵活的调度功能,能够根据预定义的时间表触发任务,同时...

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

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

    spring+quartz demo

    Spring 提供了与 Quartz 集成的模块,使得在 Spring 应用程序中使用 Quartz 更加便捷,包括 Job 实例的管理、触发器的配置以及对 Quartz Scheduler 的控制。 在这个 "spring+quartz demo" 中,我们可以学习到如何将...

    spring+springMVC+mybatis+quartz动态定时任务创建

    例如,可以使用Spring的ApplicationContext来初始化Quartz的Scheduler,然后在运行时通过Spring的Bean工厂动态创建和管理Job。Quartz的JobDetail和Trigger可以被配置为动态加载,这样就能根据业务逻辑或外部输入来...

    关于spring中quartz的配置

    在Spring配置文件(如`applicationContext.xml`)中,定义`SchedulerFactoryBean`来实例化和配置Quartz Scheduler: ```xml &lt;bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz....

    spring java 定时器 执行两次 quartz

    接着,在Spring的配置文件(如`applicationContext.xml`)中,定义一个`SchedulerFactoryBean`来初始化和管理调度器: ```xml &lt;bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz....

    spring注解Quartz定时执行功能

    在Spring框架中集成Quartz库可以实现强大的定时任务管理功能。Quartz是一个开源的作业调度框架,它允许程序创建和管理任务,以便在特定时间自动执行。Spring通过其优秀的依赖注入(DI)和AOP(面向切面编程)特性,...

    Java_Spring与Quartz的整合

    - 配置Quartz:在Spring的配置文件(如`applicationContext.xml`)中,定义`SchedulerFactoryBean`,配置Quartz的基本参数,如线程池大小、JobStore类型等。 - 注册Job和Trigger:在配置文件中,通过`&lt;bean&gt;`标签...

    quartz与spring

    通过Spring的ApplicationContext,我们可以将Quartz的配置整合到Spring的配置文件中,这样Quartz的Job实例就可以被Spring管理,包括实例化、依赖注入以及销毁。Spring还提供了`org.springframework.scheduling....

    Spring+Quartz example

    同时,需要在Spring的配置文件(如`applicationContext.xml`)中配置Scheduler,声明相关的Job和Trigger。 接着,定义定时任务。在Quartz中,Job是执行的任务,Trigger是触发任务的时间规则。Spring支持使用`@...

    Spring中Quartz调度器的使用 示例代码

    在Spring框架中集成Quartz调度器,可以实现定时任务的高效管理。Quartz是一个开源的作业调度框架,它允许程序创建、调度和执行任务。在本示例中,我们将探讨如何在Spring应用中配置和使用Quartz,以及通过示例代码来...

    quartz spring

    在Spring的配置文件(如applicationContext.xml)中,你可以定义一个`SchedulerFactoryBean`,这个bean负责创建和管理Quartz的Scheduler实例。在这里,你可以设置Scheduler的一些属性,比如线程池大小、是否启动...

    spring-quartz简单实例

    Spring Quartz是一个强大的任务调度框架,它允许开发人员在Java应用程序中安排复杂的任务执行。Quartz是开源的,可扩展的,且与Spring框架完美集成,为应用提供了灵活且可靠的定时任务管理能力。在这个"spring-...

    springQuartz.zip

    4. **编写Job类**:在Spring中,一个Job通常是一个实现了`org.quartz.Job`接口的类。你需要定义`execute(JobExecutionContext context)`方法,这是实际执行的任务逻辑。Spring可以自动管理和实例化这些Job,使得任务...

    Spring中Quartz的配置

    本文将详细介绍如何在Spring项目中配置和使用Quartz,帮助开发者更好地理解和掌握这项技术。 #### 二、Quartz简介 Quartz是一个全面的、开放源代码的作业调度框架,它可以被应用在J2EE和J2SE应用程序中,用于处理...

    spring quartz定时任务demo

    在Java开发中,Spring框架与Quartz库的结合使用能够帮助开发者实现强大的定时任务功能。本文将详细解析“spring quartz定时任务demo”这个项目,它提供了实现Java定时任务的实例,便于快速理解和应用。 首先,...

    spring+quartz任务调度代码版

    在Spring整合Quartz的过程中,首先需要在Spring配置文件中声明Scheduler工厂bean,然后定义Job和Trigger的bean。Spring通过`org.springframework.scheduling.quartz.SchedulerFactoryBean`来创建和管理Quartz的...

    Spring Quartz Demo

    这个项目展示了如何配置Spring来管理和执行定时任务,利用Quartz的强大功能来实现应用程序的自动化作业调度。 **Spring与Quartz的集成** 1. **Quartz简介**:Quartz是Java平台上的开源作业调度库,它可以用来按...

Global site tag (gtag.js) - Google Analytics