We've a web-based application running on Apache Tomcat v6.0.10. Of course, reports are also available as part of our application. Now, we've planned to introduce a new feature in the application called report scheduling. Using report scheduling, application User's can schedule reports of their choice and get it delivered at their mail box. We want to give User's as much flexibility as they can in scheduling the reports.
I also heard & read about job scheduling in Java at:
Open Source Job Schedulers in Java
What is Quartz
JobServer 1.4 Open Source Java Job Scheduler
Considering my use case explained above, my questions are:
1) Is it possible to use Sun's own java.util.TimerTask for my complex report scheduling?
2) What are the valid/strong reasons/limitations of java.util.TimerTask compared to other job scheduler frameworks? So that I myself have a strong belief/reason before choosing a third-party job scheduler framework.
3) There are a maximum of 100-200 Users in my application. In case, Users have scheduled reports in such a way at one time there are 100 report requests in the queue. How does the job scheduler framework OR java.util.TimerTask handle such scenarios? Do we have control over this?
4) At any time, Users are allowed to change their report schedules. Does the job scheduler framework support this?
5) Obviously, to run a report there are report inputs, that has to be passed to each report schedule. Do we have the flexibility/option in passing parameters to the job scheduler framework?
5) Which is the best way? Integrating job scheduler framework with web application or running it as a standalone?
Because of memory leak in our application, we've a restart of Tomcat service daily-basis at low-usage time. Reason I'm explaining this is that report scheduled by Users should be persisted across server/Tomcat restarts. Take this into consideration.
Experts opinion in right direction are appreciated.