Advertisement
Guest User

Untitled

a guest
Jul 6th, 2016
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.53 KB | None | 0 0
  1. @Configuration
  2. @ConditionalOnProperty(name = "quartz.enabled")
  3. public class SchedulerConfig {
  4.  
  5. @Bean
  6. public JobFactory jobFactory(ApplicationContext applicationContext) {
  7. AutowiringSpringBeanJobFactory jobFactory = new AutowiringSpringBeanJobFactory();
  8. jobFactory.setApplicationContext(applicationContext);
  9. return jobFactory;
  10. }
  11.  
  12. @Bean
  13. public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource, JobFactory jobFactory,
  14. @Qualifier("sampleJobTrigger") Trigger sampleJobTrigger) throws IOException {
  15. SchedulerFactoryBean factory = new SchedulerFactoryBean();
  16. // this allows to update triggers in DB when updating settings in config
  17. // file:
  18. factory.setOverwriteExistingJobs(true);
  19. factory.setDataSource(dataSource);
  20. factory.setJobFactory(jobFactory);
  21.  
  22. factory.setQuartzProperties(quartzProperties());
  23. // factory.setTriggers(sampleJobTrigger);
  24.  
  25. return factory;
  26. }
  27.  
  28. @Bean
  29. public Properties quartzProperties() throws IOException {
  30. PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
  31. propertiesFactoryBean.setLocation(new ClassPathResource("/quartz.properties"));
  32. propertiesFactoryBean.afterPropertiesSet();
  33. return propertiesFactoryBean.getObject();
  34. }
  35.  
  36. @Bean
  37. public JobDetailFactoryBean sampleJobDetail(String name) {
  38. return createJobDetail(SampleJob.class,name);
  39. }
  40.  
  41. @Bean(name = "sampleJobTrigger")
  42. public SimpleTriggerFactoryBean sampleJobTrigger(@Qualifier("sampleJobDetail") JobDetail jobDetail,
  43. @Value("${samplejob.frequency}") long frequency) {
  44. return createTrigger(jobDetail, frequency);
  45. }
  46.  
  47. public static JobDetailFactoryBean createJobDetail(Class jobClass,String name) {
  48. JobDetailFactoryBean factoryBean = new JobDetailFactoryBean();
  49. factoryBean.setJobClass(jobClass);
  50. factoryBean.setName(name);
  51. // job has to be durable to be stored in DB:
  52. factoryBean.setDurability(true);
  53. return factoryBean;
  54. }
  55.  
  56. private static SimpleTriggerFactoryBean createTrigger(JobDetail jobDetail, long pollFrequencyMs) {
  57. SimpleTriggerFactoryBean factoryBean = new SimpleTriggerFactoryBean();
  58. factoryBean.setJobDetail(jobDetail);
  59. factoryBean.setStartDelay(0L);
  60. factoryBean.setRepeatInterval(pollFrequencyMs);
  61. factoryBean.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
  62. // in case of misfire, ignore all missed triggers and continue :
  63. factoryBean.setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT);
  64. return factoryBean;
  65. }
  66.  
  67. // Use this method for creating cron triggers instead of simple triggers:
  68. public static CronTriggerFactoryBean createCronTrigger(JobDetail jobDetail, String cronExpression) {
  69. CronTriggerFactoryBean factoryBean = new CronTriggerFactoryBean();
  70. factoryBean.setJobDetail(jobDetail);
  71. factoryBean.setCronExpression(cronExpression);
  72. factoryBean.setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW);
  73. return factoryBean;
  74. }
  75. }
  76.  
  77. public void saveScheduledTime(String name) throws SchedulerException, ParseException {
  78.  
  79. JobDetailFactoryBean jobDetailFactoryBean = SchedulerConfig.createJobDetail(SampleJob.class,name);
  80. JobDetail jobDetail = jobDetailFactoryBean.getObject();
  81. CronTriggerFactoryBean cronTriggerFactoryBean = SchedulerConfig.createCronTrigger(jobDetail, "0/5 * * * * ?");
  82. Trigger trigger = cronTriggerFactoryBean.getObject();
  83. Scheduler scheduler = new StdSchedulerFactory().getScheduler();
  84. scheduler.start();
  85. scheduler.scheduleJob(jobDetail, trigger);
  86. }
  87.  
  88. INFO : org.quartz.impl.StdSchedulerFactory - Quartz scheduler 'TestQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
  89. INFO : org.quartz.impl.StdSchedulerFactory - Quartz scheduler version: 2.2.1
  90. INFO : com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource - Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName -> 1hge15x9h1hec5jd1ksgs1d|5b540c33, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> org.postgresql.Driver, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 1hge15x9h1hec5jd1ksgs1d|5b540c33, idleConnectionTestPeriod -> 0, initialPoolSize -> 3, jdbcUrl -> jdbc:postgresql://localhost:5432/cycle, lastAcquisitionFailureDefaultUser -> null, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 20, maxStatements -> 0, maxStatementsPerConnection -> 120, minPoolSize -> 1, numHelperThreads -> 3, numThreadsAwaitingCheckoutDefaultUser -> 0, preferredTestQuery -> null, properties -> {user=******, password=******}, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false ]
  91. INFO : org.quartz.impl.jdbcjobstore.JobStoreTX - Freed 1 triggers from 'acquired' / 'blocked' state.
  92. INFO : org.quartz.impl.jdbcjobstore.JobStoreTX - Handling 2 trigger(s) that missed their scheduled fire-time.
  93. INFO : org.quartz.impl.jdbcjobstore.JobStoreTX - Recovering 0 jobs that were in-progress at the time of the last shut-down.
  94. INFO : org.quartz.impl.jdbcjobstore.JobStoreTX - Recovery complete.
  95. INFO : org.quartz.impl.jdbcjobstore.JobStoreTX - Removed 0 'complete' triggers.
  96. INFO : org.quartz.impl.jdbcjobstore.JobStoreTX - Removed 1 stale fired job entries.
  97. INFO : org.quartz.core.QuartzScheduler - Scheduler TestQuartzScheduler_$_NON_CLUSTERED started.
  98. org.quartz.SchedulerException: JobDetail cannot be null
  99. at org.quartz.core.QuartzScheduler.scheduleJob(QuartzScheduler.java:849)
  100. at org.quartz.impl.StdScheduler.scheduleJob(StdScheduler.java:249)
  101. at com.cycleforgreen.java.webService.WebServiceContoller.saveScheduledTime(WebServiceContoller.java:856)
  102. at com.cycleforgreen.java.webService.WebServiceContoller.blockCycle(WebServiceContoller.java:836)
  103. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  104. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  105. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  106. at java.lang.reflect.Method.invoke(Method.java:606)
  107. at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
  108. at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
  109. at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
  110. at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776)
  111. at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705)
  112. at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
  113. at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement