2015-01-12 5 views
2

Я использую Quartz 2 и Spring 3.0Spring Кварц: Работа не срабатывают

Я хочу использовать SchedulerFactoryBean, но моя работа не уволят.

Ниже мой файл XML

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> 

    <bean id="quartzScheduler" 
     class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
     <property name="autoStartup" value="true"/> 
     <property name="schedulerName" value="PCLoaderScheduler"/> 
    </bean> 

</beans> 

Мой код ниже:

@Component 
public class PCSchedulerManager { 

    @Autowired 
    private Scheduler scheduler; 

    public void scheduleJob(final Map<String, Object> parameters, Class inputClass) throws PCSchedulerException { 

     try { 
      long currentTimeStamp = System.currentTimeMillis(); 

      JobDetail job = JobBuilder 
          .newJob(inputClass) 
          .withIdentity(inputClass.getName() + currentTimeStamp) 
          .build(); 
      job.getJobDataMap().putAll(parameters); 

      Trigger trigger = TriggerBuilder 
           .newTrigger() 
           .withIdentity(inputClass.getName() + currentTimeStamp) 
           .build(); 

      //Schedule a job with JobDetail and Trigger 
      scheduler.scheduleJob(job, trigger); 

     } catch (SchedulerException e) { 
      throw new PCSchedulerException(e); 
     } 
    } 
} 

Пожалуйста, обратитесь Работа Я пытаюсь выполнить

public class LoaderJob implements Job { 

    public void execute(JobExecutionContext jec) throws JobExecutionException { 
     System.out.println("Do your stuff here..."); 
    } 

} 

Я знаю, что планировщик запускается при запуске сервера. Но Он не управляет моей Иов.

Кроме того, если я использую, ниже оператор вместо автоматического связывания планировщик Spring Кварц, то работа увольняют успешно

scheduler = new StdSchedulerFactory().getScheduler(); 
scheduler.start(); 

Пожалуйста, дайте мне знать, что я делаю неправильно ...

ответ

1

Кварц 2 и Весна 3.0 несовместимы. Обновлено Spring до 3.1. Теперь он отлично работает

1

Нужно ли вводить зависимости в задание? Затем установите QuartzJobBean

и переопределить метод executeInternal().

Также, пожалуйста, проверьте, если вы получаете какое-либо исключение во время выполнения задания.

+0

Нет. Это не сработало. Кроме того, я помню, что «Работа» работала. Но я делаю небольшую ошибку. Не знаю, что. – Bhuvan

+0

привет, вы нашли решение для этого? – Raj

0

Прежде всего, добавьте что-то подобное в свой конфигурационный файл xml. Обратите внимание, как вы можете изменить свойства repeatInterval и startDelay. Кроме того, вы можете использовать выражения cron. Читайте о них от this link.

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
     <property name="triggers"> 
     <list>    
      <ref bean="cronTrgTest" /> 
     </list> 
     </property> 
    </bean> 

    <bean id="cronTrgTest" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> 
     <property name="jobDetail" ref="testJob" /> 
     <property name="repeatInterval" value="5000" /> 
     <property name="startDelay" value="1000" /> 
    </bean> 

    <bean id="testJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
     <property name="targetObject" ref="cronTest" /> 
     <property name="targetMethod" value="test" /> 
    </bean> 

    <bean id="cronTest" class="com.mustafaergin.ws.cron.CronTest"> 
    </bean> 

Затем реализовать цель POJO, и все готово.

public class CronTest { 

    public void test() { 
     System.out.println("TEST"); 
    } 

} 

Вы можете найти оригинальную статью, которую я написал некоторое время назад here.

+0

Спасибо за ваши указания относительно предоставления ответа. Я включил критические части в ответ. – erginm

Смежные вопросы