KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > quartz > examples > example2 > SimpleTriggerExample


1 /*
2  * Copyright 2005 OpenSymphony
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5  * use this file except in compliance with the License. You may obtain a copy
6  * of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13  * License for the specific language governing permissions and limitations
14  * under the License.
15  *
16  */

17
18 package org.quartz.examples.example2;
19
20 import java.util.Date JavaDoc;
21
22 import org.quartz.JobDetail;
23 import org.quartz.Scheduler;
24 import org.quartz.SchedulerFactory;
25 import org.quartz.SchedulerMetaData;
26 import org.quartz.SimpleTrigger;
27 import org.quartz.TriggerUtils;
28 import org.quartz.impl.StdSchedulerFactory;
29
30 import org.apache.commons.logging.LogFactory;
31 import org.apache.commons.logging.Log;
32
33 /**
34  * This Example will demonstrate all of the basics of scheduling capabilities
35  * of Quartz using Simple Triggers.
36  *
37  * @author Bill Kratzer
38  */

39 public class SimpleTriggerExample {
40
41     
42     public void run() throws Exception JavaDoc {
43         Log log = LogFactory.getLog(SimpleTriggerExample.class);
44
45         log.info("------- Initializing -------------------");
46
47         // First we must get a reference to a scheduler
48
SchedulerFactory sf = new StdSchedulerFactory();
49         Scheduler sched = sf.getScheduler();
50
51         log.info("------- Initialization Complete --------");
52
53         log.info("------- Scheduling Jobs ----------------");
54
55         // jobs can be scheduled before sched.start() has been called
56

57         // get a "nice round" time a few seconds in the future...
58
long ts = TriggerUtils.getNextGivenSecondDate(null, 15).getTime();
59
60         // job1 will only fire once at date/time "ts"
61
JobDetail job = new JobDetail("job1", "group1", SimpleJob.class);
62         SimpleTrigger trigger =
63             new SimpleTrigger("trigger1", "group1", new Date JavaDoc(ts));
64
65         // schedule it to run!
66
Date JavaDoc ft = sched.scheduleJob(job, trigger);
67         log.info(job.getFullName() +
68                 " will run at: " + ft +
69                 " and repeat: " + trigger.getRepeatCount() +
70                 " times, every " + trigger.getRepeatInterval() / 1000 + " seconds");
71
72         // job2 will only fire once at date/time "ts"
73
job = new JobDetail("job2", "group1", SimpleJob.class);
74         trigger = new SimpleTrigger("trigger2", "group1", "job2", "group1",
75                 new Date JavaDoc(ts), null, 0, 0);
76         ft = sched.scheduleJob(job, trigger);
77         log.info(job.getFullName() +
78                 " will run at: " + ft +
79                 " and repeat: " + trigger.getRepeatCount() +
80                 " times, every " + trigger.getRepeatInterval() / 1000 + " seconds");
81
82         // job3 will run 11 times (run once and repeat 10 more times)
83
// job3 will repeat every 10 seconds (10000 ms)
84
job = new JobDetail("job3", "group1", SimpleJob.class);
85         trigger = new SimpleTrigger("trigger3", "group1", "job3", "group1",
86                 new Date JavaDoc(ts), null, 10, 10000L);
87         ft = sched.scheduleJob(job, trigger);
88         log.info(job.getFullName() +
89                 " will run at: " + ft +
90                 " and repeat: " + trigger.getRepeatCount() +
91                 " times, every " + trigger.getRepeatInterval() / 1000 + " seconds");
92         
93         // the same job (job3) will be scheduled by a another trigger
94
// this time will only run every 70 seocnds (70000 ms)
95
trigger = new SimpleTrigger("trigger3", "group2", "job3", "group1",
96                 new Date JavaDoc(ts), null, 2, 70000L);
97         ft = sched.scheduleJob(trigger);
98         log.info(job.getFullName() +
99                 " will [also] run at: " + ft +
100                 " and repeat: " + trigger.getRepeatCount() +
101                 " times, every " + trigger.getRepeatInterval() / 1000 + " seconds");
102
103         // job4 will run 6 times (run once and repeat 5 more times)
104
// job4 will repeat every 10 seconds (10000 ms)
105
job = new JobDetail("job4", "group1", SimpleJob.class);
106         trigger = new SimpleTrigger("trigger4", "group1", "job4", "group1",
107                 new Date JavaDoc(ts), null, 5, 10000L);
108         ft = sched.scheduleJob(job, trigger);
109         log.info(job.getFullName() +
110                 " will run at: " + ft +
111                 " and repeat: " + trigger.getRepeatCount() +
112                 " times, every " + trigger.getRepeatInterval() / 1000 + " seconds");
113
114         // job5 will run once, five minutes past "ts" (300 seconds past "ts")
115
job = new JobDetail("job5", "group1", SimpleJob.class);
116         trigger = new SimpleTrigger("trigger5", "group1", "job5", "group1",
117                 new Date JavaDoc(ts + 300000L), null, 0, 0);
118         ft = sched.scheduleJob(job, trigger);
119         log.info(job.getFullName() +
120                 " will run at: " + ft +
121                 " and repeat: " + trigger.getRepeatCount() +
122                 " times, every " + trigger.getRepeatInterval() / 1000 + " seconds");
123
124         // job6 will run indefinitely, every 50 seconds
125
job = new JobDetail("job6", "group1", SimpleJob.class);
126         trigger = new SimpleTrigger("trigger6", "group1", "job6", "group1",
127                 new Date JavaDoc(ts), null, SimpleTrigger.REPEAT_INDEFINITELY, 50000L);
128         ft = sched.scheduleJob(job, trigger);
129         log.info(job.getFullName() +
130                 " will run at: " + ft +
131                 " and repeat: " + trigger.getRepeatCount() +
132                 " times, every " + trigger.getRepeatInterval() / 1000 + " seconds");
133
134         log.info("------- Starting Scheduler ----------------");
135
136         // All of the jobs have been added to the scheduler, but none of the jobs
137
// will run until the scheduler has been started
138
sched.start();
139
140         log.info("------- Started Scheduler -----------------");
141
142         // jobs can also be scheduled after start() has been called...
143
// job7 will repeat 20 times, repeat every five minutes
144
job = new JobDetail("job7", "group1", SimpleJob.class);
145         trigger = new SimpleTrigger("trigger7", "group1", "job7", "group1",
146                 new Date JavaDoc(ts), null, 20, 300000L);
147         ft = sched.scheduleJob(job, trigger);
148         log.info(job.getFullName() +
149                 " will run at: " + ft +
150                 " and repeat: " + trigger.getRepeatCount() +
151                 " times, every " + trigger.getRepeatInterval() / 1000 + " seconds");
152         
153         // jobs can be fired directly... (rather than waiting for a trigger)
154
job = new JobDetail("job8", "group1", SimpleJob.class);
155         job.setDurability(true);
156         sched.addJob(job, true);
157         log.info("'Manually' triggering job8...");
158         sched.triggerJob("job8", "group1");
159
160         log.info("------- Waiting 30 seconds... --------------");
161
162         try {
163             // wait 30 seconds to show jobs
164
Thread.sleep(30L * 1000L);
165             // executing...
166
} catch (Exception JavaDoc e) {
167         }
168
169         // jobs can be re-scheduled...
170
// job 7 will run immediately and repeat 10 times for every second
171
log.info("------- Rescheduling... --------------------");
172         trigger = new SimpleTrigger("trigger7", "group1", "job7", "group1",
173                 new Date JavaDoc(), null, 10, 1000L);
174         ft = sched.rescheduleJob("trigger7", "group1", trigger);
175         log.info("job7 rescheduled to run at: " + ft);
176         
177         log.info("------- Waiting five minutes... ------------");
178         try {
179             // wait five minutes to show jobs
180
Thread.sleep(300L * 1000L);
181             // executing...
182
} catch (Exception JavaDoc e) {
183         }
184
185         log.info("------- Shutting Down ---------------------");
186
187         sched.shutdown(true);
188
189         log.info("------- Shutdown Complete -----------------");
190
191         // display some stats about the schedule that just ran
192
SchedulerMetaData metaData = sched.getMetaData();
193         log.info("Executed " + metaData.numJobsExecuted() + " jobs.");
194
195     }
196
197     public static void main(String JavaDoc[] args) throws Exception JavaDoc {
198
199         SimpleTriggerExample example = new SimpleTriggerExample();
200         example.run();
201
202     }
203
204 }
Popular Tags