Quartz 1.5.0 Release Notes

This release contains serveral significant new features and improvements, as well as a host of bug fixes. See the ChangeLog further below for a complete listing of the nearly 60 changes in this release.

Significant New Features

  • Triggers may now have JobDataMaps associated with them. This can be useful in the case where you have a Job that is stored in the scheduler for regular/repeated use by multiple Triggers, yet with each independent triggering, you want to supply the Job with different data inputs. The JobDataMap that is now found on the JobExecutionContext (via the getMergedJobDataMap()) during Job execution serves as a convenience. It is a merge of the JobDataMap found on the JobDetail and the one found on the Trigger, with the value in the latter overriding any same-named values in the former.
  • New Trigger Type: NthIncludedDayTrigger. This is a trigger which fires on the Nth day of every month or year that is not excluded by the associated calendar. See it's JavaDoc for full features and behavior description.
  • User Defined JobFactories. Users can now define their own mechanisms for instantiating Jobs. This feature will be useful to those who would like to take advantage of IoC container features, such as dependency injection. See new method: Scheduler.setJobFactory(org.quartz.spi.JobFactory).
  • PropertySettingJobFactory. A JobFactory type that will reflectively set properties on a Job from values in the JobDataMap after the job is instantiated.
  • Direct support for more databases: Derby, DB2 version 8.

Key Changes

  • Quartz is now distributed under the Apache 2.0 license.
  • There is no longer a limit on the number of threads that a SimpleThreadPool can have.
  • Various improvements and new features in JobInitializationPlugin and related jobs xml format.

Core API changes

  • It is no longer necessary to specify a group name on a Job or Trigger, if left unset or set to null, Scheduler.DEFAULT_GROUP will be used.
  • org.quartz.helpers.TriggerUtils class moved up to main package, so it is now org.quartz.TriggerUtils. The old version of the class was left behind but deprecated.
  • Various small API cleanups involving deprecations of old methods.

Migration Notes

Necessary Code Changes

Version Description Old Code New Code
1.4.x no changes necessary    

Necessary Database Changes (if using JDBC-JobStore)

Version Description update command(s)
1.4.x Add Blob column for JobDataMap to QRTZ_TRIGGERS table. This example update SQL is for Oracle. Make sure you use the appropriate data type for your database, which can be found in the tables_xxx.sql file for your db. You should leave the value of this new column NULL for existing rows. alter table QRTZ_TRIGGERS add JOB_DATA BLOB

Changelog

OpenSymphony JIRA (59 issues)
T Key Summary
Improvement QUARTZ-251 Add a static makeImmediateTrigger(..) method to TriggerUtils
Bug QUARTZ-250 Cron Expression doesn't work for Wednesday
Bug QUARTZ-245 log4j.properties is specified instead of log4j.xml in clusterExample_*.bat
Improvement QUARTZ-242 quartz_jobs.xml should be loaded using url.openStream() instead of using FileInputStream
Bug QUARTZ-233 org.quartz.plugin.jobInitializer.overWriteExistingJobs does not work!
Improvement QUARTZ-232 Store the StdSchedulerFactory in the ApplicationContext during init() of QuartzInitializerServlet
Bug QUARTZ-231 Use of String.toUpperCase() may be unsafe for non English locales
Bug QUARTZ-225 Ignore redundant scheduler shutdown calls
Bug QUARTZ-224 Clarify docs to prevent potential Oracle DB lock
Task QUARTZ-223 New Trigger-level JobDataMaps feature needs to work with recovering triggers.
New Feature QUARTZ-221 Add new JobFactory type -PropertySettingJobFactory
Improvement QUARTZ-220 Make Scheduler.DEFAULT_GROUP more default - don't force specification when creating Jobs and Triggers
Improvement QUARTZ-219 Move TriggerUtils to main package.
Improvement QUARTZ-218 Allow specification of RMI Port the Quartz Scheduler binds to.
New Feature QUARTZ-216 Allow association of JobDataMaps with Triggers
Task QUARTZ-215 New Firebird DB 1.5 Script
Task QUARTZ-213 Switch Quartz to Apache 2.0 License
Bug QUARTZ-211 scheduleJob unpauses existing Triggers for StatefulJobs
Bug QUARTZ-210 Use of Thread.currentThread().getContextClassLoader() in JobStoreSupport
Bug QUARTZ-208 The method createVolatileSchduler() is misspelled
Bug QUARTZ-207 Remove unnecessary field for Cron Trigger Table structure for SapDB
New Feature QUARTZ-206 Derby DB Support
New Feature QUARTZ-205 Add support to search for jobs by name on the List Jobs page
Bug QUARTZ-203 UnResolved text properties after invalid logon
Bug QUARTZ-202 Cannot compile oracle jdbcjobstore components without WebLogic
Improvement QUARTZ-200 Load XML Definition from InputStream
Improvement QUARTZ-198 EJBInvoker enhancement for real life applications
Bug QUARTZ-196 Default CronTrigger constructor doesn't set valid field values
Bug QUARTZ-194 Log message in JobSchedulingDataProcessor.scheduleJobs not accurately reporting number of jobs scheduled.
Improvement QUARTZ-193 CronTrigger: Remove e.printStackTrace() in line 1140
Improvement QUARTZ-192 Support config file extensions in JobSchedulingDataProcessor
Sub-task QUARTZ-190 Click on "listJobs" in the webapp and click on View for any listed job.Then click on Edit and change the "recover" and "KeepJobsFinished" check boxes and click on "Save".Observe that updated "recover" checkbox is not updated correctly
Bug QUARTZ-187 After the web app is up, go to Schedule Control page, click the button stop the scheduler, Scheduler status is shown as "Paused".Actually the scheduler is stopped.(where only default scheduler is running)
Bug QUARTZ-184 QuartzInitializerServlet destroy bug
Bug QUARTZ-183 Error in cronType in job_scheduling_data_1_1.xsd
Improvement QUARTZ-181 QuartzInitializerServlet only shuts down DefaultScheduler on destroy.
New Feature QUARTZ-178 New NthIncludedDayTrigger
Bug QUARTZ-177 Small bug in org.quartz.helpers.TriggerUtils.validateDayOfMonth
Bug QUARTZ-175 JDBCJobStore can't connect to DataSource
Bug QUARTZ-173 Incompatible field in tables_sapdb.sql.
Improvement QUARTZ-171 Suggested minor change to the StdScheduleFactory
Improvement QUARTZ-169 DB2v8Delegate
Bug QUARTZ-167 In Quartz Web App - Unable to click on column headers in job listing
Bug QUARTZ-166 Scheduling a native job for Windows 2003 is different than other versions of windows
Bug QUARTZ-163 ClusterManager may yield a ThreadDeath in Tomcat on shutdown
Improvement QUARTZ-158 Order of execution of misfired triggers
Bug QUARTZ-157 bug in org.quartz.jobs.NativeJob
Improvement QUARTZ-156 Remove historical 200 thread limit on SimpleThreadPool
Bug QUARTZ-154 JobInitializationPlugin: findFile() does not work if jobs.xml inside jar-file (in classpath)
Improvement QUARTZ-147 RuntimeException/Error can kill QuartzSchedulerThread, disable scheduler
Improvement QUARTZ-140 Adding Job listener in XML job initialization plugin
Improvement QUARTZ-137 Add more detailed logging to JTAJobRunShell
Improvement QUARTZ-132 JobInitializationPlugin should accept multiple job files
Bug QUARTZ-94 FileScanJob : jobs.xml doesnot exists
New Feature QUARTZ-74 Job Description in xml job definition
Bug QUARTZ-40 Durability and Recovery Turned Off on Job Edit
Improvement QUARTZ-32 More Flexible Job Instantiation
Improvement QUARTZ-19 Don't start misfire handling until scheduler.start() has been invoked
Task QUARTZ-10 Document new features in 1.3.4 and 1.4.0