package com.captaindebug.errortrack.quartz; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.access.BeanFactoryLocator; import org.springframework.beans.factory.access.BeanFactoryReference; import org.springframework.context.access.ContextSingletonBeanFactoryLocator; import org.springframework.scheduling.quartz.QuartzJobBean; import com.captaindebug.errortrack.file.FileLocator; public class FileLocatorJob extends QuartzJobBean { private static final Logger logger = LoggerFactory.getLogger(FileLocatorJob.class); private final FileLocator fileLocator; public FileLocatorJob() { // Load the ContextSingletonBeanFactoryLocator BeanFactoryLocator factoryLocator = ContextSingletonBeanFactoryLocator.getInstance("classpath:beanRefContext.xml"); // Get hold of the factory to use BeanFactoryReference ref = factoryLocator.useBeanFactory("nodeContextFactory"); BeanFactory factory = ref.getFactory(); // Get the file locator bean fileLocator = factory.getBean(FileLocator.class); } @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { try { logger.info("Running FileLocatorJob.."); fileLocator.findFile(); } catch (Exception e) { logger.error("Error in file locator job: " + e.getMessage(), e); throw new JobExecutionException(e); } } }