������»��Џ�¡�2007.08.25
\���\���\���\�����¡�Quartz\¹\��\���\������¼\���(org.quartz..)
���������¡�
jboss4.0.5(jems1.2.0.beta3)
jdk1.5.0_07
eclipse3.2.1
postgreSQL8.1
jbossSeam1.1.0
������������
����\Ð\���\���½�������������\¹\��\���\������¼\������������·������quartz�����ҏ�ġ����¹���«���������������������¹���̏�¡���������½��Џ�����������MDB������\¹\��\���\������¼\���\���\�돢������������������������¡�\¹\��\���\������¼\���\���\���\¹������entity(�ޏ�����³������)������������µ������µ������������������������\¹\��\���\������¼\���������µ������������������돢����¹������¼«��ď��������\¹\��\���\������¼\���\���\�돢�¹�����������������ҏ��«���¾���·�����������Ώ��������¹��¡����������������Ï��³������������Scheduler,Job,JobDetail,Trigger,Listener\���\���\¹�����������������ҏ�����²��ҏ��¹�����������ď����������� quartz������\���\������¼\���\���\��\���������¾������·�����������я����������Ώ��������¹��¡�
http://www.opensymphony.com/quartz/wikidocs/Tutorial.html
��ޏ��\Scheduler��¡�\¹\��\���\������¼\��������ҏ����폢�������Ï�����³������¹������\���\���\¹������µ��������
SchedulerFactory schedulerFactory = new org.quartz.impl.StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
scheduler.start();
��²���\\¹\��\���\������¼\���\���\���\���(Job)����\Ð\���\��������ҏ��Ð������
����Scheduler������������������������¼���¹��ԏ��µ������������\���\���\��ӏ�����\Ð\���\���½�������������Job\���\���\��ď��¼\���\�����¼\¹������¼��������؏��·���������¹��¡�(����只����������\Ð\���\���interface������perform\���\½\���\���������¼��������؏��·����������돢돫��·����������������������������Job\���\���\��ď��¼\���\�����¼\¹������������¼��������؏�����������¹¹���¹���������«Adopter\���\��ď��¼\��я���������������������只����������wrap���¹���������«�������������·���������������������������¹)
���¡���\JobDetail(JobDataMap)��¡�Scheduler������¼�����돪��������Ð�����ď��¹����������������Job���½��������������������������������������JobDetail\���\���\¹(�����������ԏ�����JobDataMap�����ҏ�����»����·����������������������������¼���¼���������JobDataMap����½��������)���������¹��¡�JobDetail���������������¹������job����������µ��������ҏ�����»����·���������¹��¡����������������Ώ�����JobDetail����������������»��Џ�����Job������\���\���\¹\���\���\¹�����ҡ돫⏢����������·����������������������������Job\���\���\¹\���\���\¹�������������������������������\���\���\���\µ\���\���\���������Scheduler\���\���\¹������������������������\³\���\���\������¼\������µ����������������������������»�ߏ��������������¹��¡�Job������¼���¹��ԏ��µ���������������¾����돢����������������µ�������������������������·�����������Ï��«��¡���������¹��𡯏�����������¾��Ï����я�����Job������»����������������������������������������������叢�������������������·������JobDataMap������»������������������������Ï��³���������������������������������¹��¡����������������Ώ�����\���\���\��ӏ�����\Ð\���\���½�������������������������execute�����������ԏ��«������JobDataMap������»²¾������¹������������������JobExecutionContext���«������JobDataMap������¼������������·���������¹��¡�
������¡�Job\���\���\¹
�돫⏢ď�ԏ��µ���·������\³\���\¹\���\���\���\��ď��̏���̏���ߏ�¡�
public class MartBuyMatrixJob implements Job {
public MartBuyMatrixJob() {
}
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("debug070825��¡�" + context.getJobDetail().getName()
+ "\n");
System.out.println("debug070825��¡�" + context.getJobDetail().getGroup()
+ "\n");
JobDataMap jobDataMap = context.getJobDetail().getJobDataMap();
System.out.println("debug070825" + jobDataMap.getString("debug1")
+ "\n");
}
}
������¡�JobDetail����������������
JobDetail jobDetail = new JobDetail( //
view.getId1() // job���¾
, null // job\��\������¼\��
, Class.forName(view.getPath1() + "/"
+ view.getProcess1()) // job\���\���\¹\���\���\¹
);
jobDetail.getJobDataMap().put("debug1", "evangelistic");
����Durability,Volatility,RequestsRecovery,JobListeners�����������������������������������������叢����
���¡���\Trigger��¡������������á돫�������Scheduler������¼�����돪��������Ð�����ď��¹����������������Trigger\���\���\¹���������¹���̏��³�����������������������������ԏ�����JobDataMap�����ҏ�����»����·����������������������������¼���¼���������JobDataMap������¾��Ï����я����ҏ�����»����·���������¹��¡�\¹\��\���\������¼\���������\���\���\�̏��¼����������µ��������������������Ï��³������������������������돫������ӏ�돪�½���������»�ߏ������������������������̏�����»���(»��С���ӏ�����\¹\��\���\������¼\���������������������trigger)������������µ�������돢¡�����������������cron���������·�����������Ï��«��¡�trigger������\��\���\»\���\¹�����ҏ�����²��ҏ��¹������������������CronTrigger\���\���\¹(\¹\��\���\������¼\���µ��������)������SimpleTrigger\���\���\¹(»��С����µ��������)�����ҏ��«�������������̢�������»���«���������·���������������»�����я���
������¡�Trigger����������������
Trigger trigger = TriggerUtils.makeDailyTrigger( //
1 // »���
, 00 // �����
);
trigger.setStartTime(new Date());
trigger.setName(view.getId1());
�������������������Ώ�����������¾���JobDetail������������������group������null���������·������Scheduler���������Ð�����ď��¹������������job������trigger������DEFAULT_GROUP������½�������돢�¹�����������������������������¹��¡��³������³µ����돢���������������叢������¡�
���¡���\���Ð�����ď�¡���돪�������������Scheduler������JobDetail������Trigger�����ҏ��Ð�����ď��·���������¹��¡�
scheduler.scheduleJob(jobDetail, trigger);
��³���\Listener����������¡�
������ TriggerListener��¡�trigger\���\���\���\µ\���\���\���¾���������³���¼���\���\���\���\������������Ð���¹������\���\¹\���
����������¡������я��¾�����폢����(A\Ð\���\���¼���¹��ԏ�����������B\Ð\���\���������������ޏ�����µ���»������)��������������¡�¼���¹��ԏ��µ������������������¾���¹���������Vetoed��������������\���\½\���\���������������½���������¡�
������ JobListener��¡�job\���\���\���\µ\���\���\���¾���������³���¼���\���\���\���\������������Ð���¹������\���\¹\���
����������¡�����Ï�����������²��ԏ����¼��������я������Ð������½���������(���³������¾���¹���������addGlobal������\��\������¼\Ð\���(�����job���������Ð���·������)���������·������\���\¹\������Ð������)
����������¡�job(\Ð\���\���½���������)������½���½��̏����폢������¡�A������job����½��쏢���������ď�����B������job������³«»�����������������¡�(�����ď��������·quartz������version1.6.0������������JobChainingJobListener���̏��������������������³������������¼������½������������½�����Ï��������¹����)
�����¡�quartz-all-1.6.0.jar������³���������·�����������Ώ��������¹��¡�
// ������³������¹������\¹\��\���\������¼\���������ď��ID������Chain�����ҏ�����������
scheduler.addJob(jobDetail2, true);
scheduler.addJob(jobDetail3, true);
scheduler.addJob(jobDetail4, true);
scheduler.addJob(jobDetail5, true);
JobChainingJobListener chain1 = new JobChainingJobListener(
view.getId1());
chain1.addJobChainLink(jobDetail1.getKey(), jobDetail2
.getKey());
chain1.addJobChainLink(jobDetail2.getKey(), jobDetail3
.getKey());
chain1.addJobChainLink(jobDetail3.getKey(), jobDetail4
.getKey());
chain1.addJobChainLink(jobDetail4.getKey(), jobDetail5
.getKey());
scheduler.addJobListener(chain1);
scheduler.scheduleJob(jobDetail, trigger);
��1.6.0���������·������¾���¹���������quartz-ra.rar�����������������Ï��¹���������Ð�����������������������·�����������Ï��«���폪����³«���¹������������µ���������µ�����������������������������������������½������·��������돪����·���������·������������������\��\������¼���������������������«���������·���������������»�����я���
��1.6.0���������·������¾���¹���������commons-collections-3.1.jar����core���������������������������������������������¹��¡�
������ SchedulerListener��¡�������������������job������trigger�������돪����������¹���������������ޏ�����������������������Scheduler¼«��ď���������������������������������¹������\¹\��\���\������¼\������������Ð���¹������\���\���\���\���������\���\¹\�����¡�����������²��ď����ҏ������������������������������������«¼«����̏��������������������«��������������������������������������������������¡�pause,resume������������¼�����돪�����\���\½\���\��������ҏ����Ώ��������Ð�����������½�����叢����������������������¹���̏�¡�\µ\���\��\���������\���\������¼\���\���\��\��������������������������»�����я��������·�����ď�¡�
�������������쏢¡�\���\¹\����������돪�²¼�������������������·������\¹\��\���\������¼\������������Ð�����ď��·���������¹��¡�
scheduler.addTriggerListener(\���\¹\���¼���������)
scheduler.addJobListener(\���\¹\���¼���������)
scheduler.addGlobalTriggerListener(\���\¹\���¼���������)
scheduler.addGlobalJobListener(\���\¹\���¼���������)
scheduler.addSchedulerListener(\���\¹\���¼���������)
���\���½�������¾
������ TriggerUtils\���\���\¹��¡�\���\���\�̏��¼�����ҡ��������ޏ�����������������¹�������돪㏢����utility\���\���\¹
������ StdSchedulerFactory��¡�SchedulerFactory¼��������؏�¡�
������ JobStore��¡����������������叢����
������ ThreadPool��¡���������������\Ð\���\���·���½������������ҏ���������½����������·����������������������¾������·�����������Ώ����ԏ��Ð���·���������·���������������������·�����ď�¡�quartz����������������¼��������؏�����Worker Thread����eclipse������\���\Ð\���\�돢����������woker\¹\���\���\�������10�����������̏����㏢����������������������������·�����ď�¡�
��µ���\����³��
������³�돢����Job\���\���\¹������JobExecutionException������throw���·���������¹��¡�\��\��\���\�ޏ��¼\·\���\��я���³�돢���ҏ���̏����⏢����½����������¹���������«��¡����Ï�����½������������������������ÐJobListener������\��\������¼\Ð\������������Ð�����ď��·��¡�JobExecutionException�����ҏ��«������½�������������¼��������؏��¹���������«���폢����������»�ߏ��������������������¹��¡�������������\���\������¼\���\���\��\���������������µ���̏��µ����������������\���\¹\������·�����������Ώ��������¹��¡�
����돪���������������¡�\·\¹\���\����ޏ�ď�����\���\���\Ð���������Ð���¹��������돩�½���������(rerun)�����¡���������������Ѣ�����������돪�»³��������¡돪�»��������������������²��я�����quartz������������������������¼���������¼���������������¼������½���·���������¹��¡�