首页 > 代码库 > Spring +quartz获取ApplicationContext上下文
Spring +quartz获取ApplicationContext上下文
job存在数据库中,可以进行动态的增增删改查,最近遇到了如何获取ApplicationContext上下文的问题,解决办法如下
applicationContext-quartz.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans> <bean name="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="applicationContextSchedulerContextKey" value=http://www.mamicode.com/"applicationContextKey"/>>
<!--applicationContextSchedulerContextKey: 是org.springframework.scheduling.quartz.SchedulerFactoryBean这个类中把spring上下 文以key/value的方式存放在了quartz的上下文中了,可以用applicationContextSchedulerContextKey所定义的key得到对应的spring上下文-->对应的job任务
public class QuartzJobBean implements Job { /* (non-Javadoc) * @see org.quartz.Job#execute(org.quartz.JobExecutionContext) */ @Override public void execute(JobExecutionContext jobContext) throws JobExecutionException { String jobId = jobContext.getJobDetail().getDescription(); String serviceId = jobContext.getTrigger().getDescription(); ApplicationContext applicationContext=null; try { applicationContext=getApplicationContext(jobContext); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } WebServiceService webServiceService = (WebServiceService) applicationContext.getBean("webServiceService"); WebServicePOJO webService = webServiceService.getWebService(serviceId); ScheduleService.schedule(webService.getNameSpace(), webService.getServiceName(), webService.getWsdlURL(), webService.getMethod()); } private static final String APPLICATION_CONTEXT_KEY = "applicationContextKey"; private ApplicationContext getApplicationContext(JobExecutionContext context) throws Exception { ApplicationContext appCtx = null; appCtx = (ApplicationContext) context.getScheduler().getContext().get(APPLICATION_CONTEXT_KEY); if (appCtx == null) { throw new JobExecutionException("No application context available in scheduler context for key \"" + APPLICATION_CONTEXT_KEY + "\""); } return appCtx; } }APPLICATION_CONTEXT_KEY的值是第一个XML中配置的值,通过getApplicationContext方法传入quartz的context即可获取ApplicationContext上下文,进而获取对应的bean
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。