- Quartz Trigger getting in BLOCKED state as soon the server starts in a cluster
- org.quartz.scheduler.instanceName = TestScheduler
- org.quartz.scheduler.skipUpdateCheck = true
- org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
- org.quartz.threadPool.threadCount = 25
- org.quartz.threadPool.threadPriority = 5
- org.quartz.scheduler.wrapJobExecutionInUserTransaction = false
- org.quartz.jobStore.misfireThreshold = 60000
- org.quartz.dataSource.DSPE.jndiURL = mi_pe
- org.quartz.dataSource.DSPE.jndiAlwaysLookup = true
- org.quartz.dataSource.DSADMIN.jndiURL = mi_admin
- org.quartz.dataSource.DSADMIN.jndiAlwaysLookup = true
- org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreCMT
- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.oracle.weblogic.WebLogicOracleDelegate
- org.quartz.jobStore.dataSource = DSPE
- org.quartz.jobStore.nonManagedTXDataSource = DSADMIN
- org.quartz.jobStore.tablePrefix = q_
- org.quartz.jobStore.useProperties = true
- org.quartz.jobStore.isClustered = true
- org.quartz.scheduler.interruptJobsOnShutdown=true
- Cluster cluster = CacheFactory.ensureCluster();
- Member mySelf = cluster.getLocalMember();
- int myId = mySelf.getId();
- Properties quartzProps = new Properties();
- ClassLoader mine = getClass().getClassLoader();
- quartzProps.load(mine.getResourceAsStream(QUARTZ_PROPERTIES_SRC));
- quartzProps.setProperty(QUARTZ_INSTANCE_PROPERTY,
- QUARTZ_INSTANCE_PREFIX + myId);
- log.info("Creating quartz factory with member id "+myId+
- ". Coherence cluster member UID is "+mySelf.getUid());
- SchedulerFactory factory = new StdSchedulerFactory(quartzProps);
- Scheduler scheduler = factory.getScheduler();
- scheduler.getContext().put("context",getServletContext());
- scheduler.start();
- this.scheduler = scheduler;
- String [] groupNames = scheduler.getJobGroupNames();
- for (String groupName : groupNames) {
- log.info("Listing group name "+groupName);
- String [] jobNames = scheduler.getJobNames(groupName);
- for (String jobName : jobNames) {
- log.info("There is a job "+jobName+" in group "+groupName);
- JobDetail jd = scheduler.getJobDetail(jobName, groupName);
- log.info("Details: "+jd.getFullName()+":"+
- jd.getDescription());
- }
- }
- JobDetail myDetails = scheduler.getJobDetail(HOURLY_JOB_NAME,
- MY_GROUP_NAME);
- if (myDetails == null) {
- // job doesn't exist?
- JobDetail myDetail = new JobDetail(HOURLY_JOB_NAME,
- MY_GROUP_NAME, HourlyReporter.class);
- Trigger trigger = new CronTrigger(HOURLY_TRIGGER_NAME,
- MY_GROUP_NAME, "0 1 * ? * *");
- log.info("Created a new reporter job");
- myDetail.setRequestsRecovery(true);
- scheduler.scheduleJob(myDetail, trigger);
- }