类org.quartz.TriggerKey源码实例Demo

下面列出了怎么用org.quartz.TriggerKey的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: redis-quartz   文件: RedisJobStore.java
@Override
public boolean replaceTrigger(TriggerKey triggerKey,
		OperableTrigger newTrigger) throws JobPersistenceException {
	boolean replaced = false;
	String triggerHashKey = createTriggerHashKey(triggerKey.getGroup(), triggerKey.getName());
     try (Jedis jedis = pool.getResource()) {
        lockPool.acquire();
		
		String jobHashKey =jedis.hget(triggerHashKey, JOB_HASH_KEY); 
		if (jobHashKey == null || jobHashKey.isEmpty())
			throw new JobPersistenceException("trigger does not exist or no job is associated with the trigger");			
		
		if (!jobHashKey.equals(createJobHashKey(newTrigger.getJobKey().getGroup(), newTrigger.getJobKey().getName())))
			throw new JobPersistenceException("the new trigger is associated with a diffrent job than the existing trigger");
		
		removeTrigger(triggerKey, jedis);
		storeTrigger(newTrigger, false, jedis);
		replaced = true;
	} catch (Exception ex) {
		log.error("could not replace trigger: " + triggerHashKey, ex);
		throw new JobPersistenceException(ex.getMessage(), ex.getCause());
	} finally {
        lockPool.release();
	}
	return replaced;
}
 
protected synchronized void resumeLocalTask(String taskName) throws TaskException {
    String taskGroup = this.getTenantTaskGroup();
    if (!this.isPreviouslyScheduled(taskName, taskGroup)) {
        throw new TaskException("Non-existing task for resuming with name: " + taskName,
                                TaskException.Code.NO_TASK_EXISTS);
    }
    try {
        Trigger trigger = this.getScheduler().getTrigger(new TriggerKey(taskName, taskGroup));
        if (trigger instanceof OperableTrigger) {
            ((OperableTrigger) trigger).setNextFireTime(trigger.getFireTimeAfter(null));
        }
        this.getScheduler().resumeJob(new JobKey(taskName, taskGroup));
        log.info("Task resumed: [" + this.getTaskType() + "][" + taskName + "]");
    } catch (SchedulerException e) {
        throw new TaskException("Error in resuming task with name: " + taskName, TaskException.Code.UNKNOWN, e);
    }
}
 
源代码3 项目: lams   文件: StdJDBCDelegate.java
/**
 * <p>
 * Delete the base trigger data for a trigger.
 * </p>
 * 
 * @param conn
 *          the DB Connection
 * @return the number of rows deleted
 */
public int deleteTrigger(Connection conn, TriggerKey triggerKey) throws SQLException {
    PreparedStatement ps = null;

    deleteTriggerExtension(conn, triggerKey);
    
    try {
        ps = conn.prepareStatement(rtp(DELETE_TRIGGER));
        ps.setString(1, triggerKey.getName());
        ps.setString(2, triggerKey.getGroup());

        return ps.executeUpdate();
    } finally {
        closeStatement(ps);
    }
}
 
源代码4 项目: lams   文件: JobStoreSupport.java
public boolean removeTriggers(final List<TriggerKey> triggerKeys)
        throws JobPersistenceException {
    return (Boolean) executeInLock(
            LOCK_TRIGGER_ACCESS,
            new TransactionCallback() {
                public Object execute(Connection conn) throws JobPersistenceException {
                    boolean allFound = true;

                    // FUTURE_TODO: make this more efficient with a true bulk operation...
                    for (TriggerKey triggerKey : triggerKeys)
                        allFound = removeTrigger(conn, triggerKey) && allFound;

                    return allFound ? Boolean.TRUE : Boolean.FALSE;
                }
            });
}
 
源代码5 项目: redis-quartz   文件: RedisJobStore.java
@Override
public void resumeTrigger(TriggerKey triggerKey)
		throws JobPersistenceException {
	String triggerHashKey = createTriggerHashKey(triggerKey.getGroup(), triggerKey.getName());
     try (Jedis jedis = pool.getResource()) {
        lockPool.acquire();
		
        OperableTrigger trigger = retrieveTrigger(new TriggerKey(triggerHashKey.split(":")[2], triggerHashKey.split(":")[1]), jedis);
		resumeTrigger(trigger, jedis);
		if (trigger != null)
			applyMisfire(trigger, jedis);
	} catch (Exception ex) {
		log.error("could not resume trigger: " + triggerHashKey, ex);
		throw new JobPersistenceException(ex.getMessage(), ex.getCause());
	} finally {
        lockPool.release();
	}
}
 
源代码6 项目: spring-boot-quartz-demo   文件: JobServiceImpl.java
/**
 * Remove the indicated Trigger from the scheduler. 
 * If the related job does not have any other triggers, and the job is not durable, then the job will also be deleted.
 */
@Override
public boolean unScheduleJob(String jobName) {
	System.out.println("Request received for Unscheduleding job.");

	String jobKey = jobName;

	TriggerKey tkey = new TriggerKey(jobKey);
	System.out.println("Parameters received for unscheduling job : tkey :"+jobKey);
	try {
		boolean status = schedulerFactoryBean.getScheduler().unscheduleJob(tkey);
		System.out.println("Trigger associated with jobKey :"+jobKey+ " unscheduled with status :"+status);
		return status;
	} catch (SchedulerException e) {
		System.out.println("SchedulerException while unscheduling job with key :"+jobKey + " message :"+e.getMessage());
		e.printStackTrace();
		return false;
	}
}
 
源代码7 项目: lams   文件: DefaultClusteredJobStore.java
/**
 * <p>
 * Remove (delete) the <code>{@link org.quartz.Calendar}</code> with the given name.
 * </p>
 * <p>
 * If removal of the <code>Calendar</code> would result in <code.Trigger</code>s pointing to non-existent calendars,
 * then a <code>JobPersistenceException</code> will be thrown.
 * </p>
 * *
 * 
 * @param calName The name of the <code>Calendar</code> to be removed.
 * @return <code>true</code> if a <code>Calendar</code> with the given name was found and removed from the store.
 */
@Override
public boolean removeCalendar(String calName) throws JobPersistenceException {
  int numRefs = 0;

  lock();
  try {
    for (TriggerKey triggerKey : triggerFacade.allTriggerKeys()) {
      TriggerWrapper tw = triggerFacade.get(triggerKey);
      if (tw.getCalendarName() != null && tw.getCalendarName().equals(calName)) {
        numRefs++;
      }
    }

    if (numRefs > 0) { throw new JobPersistenceException("Calender cannot be removed if it referenced by a Trigger!"); }

    return (calendarsByName.remove(calName) != null);
  } finally {
    unlock();
  }
}
 
@Test
public void testCreateTriggerEventSucceds()
    throws Exception
{
    final TriggerEventHibernateImpl
        evt = getTestTriggerEvent();

    final TriggerEventHibernateImpl
        result = (TriggerEventHibernateImpl)mgr.createTriggerEvent(evt.getEventType(),
                                                                   JobKey.jobKey(evt.getJobName()),
                                                                   TriggerKey.triggerKey(evt.getTriggerName()),
                                                                   evt.getTime(),
                                                                   evt.getMessage(),
                                                                   "server1");

    Assert.assertNotNull(result);
    Assert.assertNotNull(result.getId());

    assertEquals(evt, result);
}
 
源代码9 项目: lams   文件: StdJDBCDelegate.java
/**
 * <p>
 * Get the names of all of the triggers in the given group and state that
 * have misfired.
 * </p>
 * 
 * @param conn
 *          the DB Connection
 * @return an array of <code>{@link
 * org.quartz.utils.Key}</code> objects
 */
public List<TriggerKey> selectMisfiredTriggersInGroupInState(Connection conn,
        String groupName, String state, long ts) throws SQLException {
    PreparedStatement ps = null;
    ResultSet rs = null;

    try {
        ps = conn
                .prepareStatement(rtp(SELECT_MISFIRED_TRIGGERS_IN_GROUP_IN_STATE));
        ps.setBigDecimal(1, new BigDecimal(String.valueOf(ts)));
        ps.setString(2, groupName);
        ps.setString(3, state);
        rs = ps.executeQuery();

        LinkedList<TriggerKey> list = new LinkedList<TriggerKey>();
        while (rs.next()) {
            String triggerName = rs.getString(COL_TRIGGER_NAME);
            list.add(triggerKey(triggerName, groupName));
        }
        return list;
    } finally {
        closeResultSet(rs);
        closeStatement(ps);
    }
}
 
源代码10 项目: lams   文件: QuartzSchedulerMBeanImpl.java
public Date scheduleJob(String jobName, String jobGroup,
        String triggerName, String triggerGroup) throws Exception {
    try {
        JobKey jobKey = jobKey(jobName, jobGroup);
        JobDetail jobDetail = scheduler.getJobDetail(jobKey);
        if (jobDetail == null) {
            throw new IllegalArgumentException("No such job: " + jobKey);
        }
        TriggerKey triggerKey = triggerKey(triggerName, triggerGroup);
        Trigger trigger = scheduler.getTrigger(triggerKey);
        if (trigger == null) {
            throw new IllegalArgumentException("No such trigger: " + triggerKey);
        }
        return scheduler.scheduleJob(jobDetail, trigger);
    } catch (Exception e) {
        throw newPlainException(e);
    }
}
 
源代码11 项目: lams   文件: JobStoreSupport.java
protected boolean updateMisfiredTrigger(Connection conn,
        TriggerKey triggerKey, String newStateIfNotComplete, boolean forceState)
    throws JobPersistenceException {
    try {

        OperableTrigger trig = retrieveTrigger(conn, triggerKey);

        long misfireTime = System.currentTimeMillis();
        if (getMisfireThreshold() > 0) {
            misfireTime -= getMisfireThreshold();
        }

        if (trig.getNextFireTime().getTime() > misfireTime) {
            return false;
        }

        doUpdateOfMisfiredTrigger(conn, trig, forceState, newStateIfNotComplete, false);

        return true;

    } catch (Exception e) {
        throw new JobPersistenceException(
                "Couldn't update misfired trigger '" + triggerKey + "': " + e.getMessage(), e);
    }
}
 
源代码12 项目: EserKnife   文件: QuartzManageController.java
@RequestMapping(value = "/remove")
public @ResponseBody Map<String,Object> remove(HttpServletRequest request) {
	Map<String,Object> map = new HashMap<String,Object>();
    String name = request.getParameter("name");
    String group = request.getParameter("group");
    if (StringUtils.isNotBlank(name) || StringUtils.isNotBlank(group)) {
    	boolean result = schedulerCenter.unscheduleJob(new TriggerKey(name, group));
        map.put("success", result);
  if(result) {
  	map.put("msg", "删除成功!");
  }else {
  	map.put("msg", "删除失败!");
  }
    }
    return map;
}
 
源代码13 项目: griffin   文件: JobInstanceTest.java
@SuppressWarnings("unchecked")
@Test
public void testExecuteWithRangeLessThanZero() throws Exception {
    JobExecutionContext context = mock(JobExecutionContext.class);
    Scheduler scheduler = mock(Scheduler.class);
    GriffinMeasure measure = createGriffinMeasure("measureName");
    JobDetail jd = createJobDetail(JsonUtil.toJson(measure), "");
    BatchJob job = new BatchJob(1L, "jobName", "qName", "qGroup", false);
    List<Trigger> triggers = Arrays.asList(createSimpleTrigger(2, 0));
    given(context.getJobDetail()).willReturn(jd);
    given(measureRepo.findOne(Matchers.anyLong())).willReturn(measure);
    given(jobRepo.findOne(Matchers.anyLong())).willReturn(job);
    given(factory.getScheduler()).willReturn(scheduler);
    given((List<Trigger>) scheduler.getTriggersOfJob(Matchers.any(
            JobKey.class))).willReturn(triggers);
    given(scheduler.checkExists(Matchers.any(TriggerKey.class)))
            .willReturn(false);
    given(jobRepo.save(Matchers.any(BatchJob.class))).willReturn(job);
    given(scheduler.checkExists(Matchers.any(JobKey.class)))
            .willReturn(false);
    jobInstance.execute(context);

}
 
源代码14 项目: sakai   文件: SchedulerTool.java
public void validateTriggerName(FacesContext context, UIComponent component,
    Object object)
{
  if (object instanceof String)
  {
    String value = (String)object;
    try
    {
      Trigger trigger = schedulerManager.getScheduler().getTrigger(TriggerKey.triggerKey(value, Scheduler.DEFAULT_GROUP));
      if (trigger != null)
      {
        FacesMessage message = new FacesMessage(rb.getString("existing_trigger_name"));
        message.setSeverity(FacesMessage.SEVERITY_WARN);
        throw new ValidatorException(message);
      }
    }
    catch (SchedulerException e)
    {
      log.error("Scheduler down!");
    }
  }
}
 
源代码15 项目: lams   文件: StdJDBCDelegate.java
public List<TriggerKey> selectMisfiredTriggersInState(Connection conn, String state,
        long ts) throws SQLException {
    PreparedStatement ps = null;
    ResultSet rs = null;

    try {
        ps = conn.prepareStatement(rtp(SELECT_MISFIRED_TRIGGERS_IN_STATE));
        ps.setBigDecimal(1, new BigDecimal(String.valueOf(ts)));
        ps.setString(2, state);
        rs = ps.executeQuery();

        LinkedList<TriggerKey> list = new LinkedList<TriggerKey>();
        while (rs.next()) {
            String triggerName = rs.getString(COL_TRIGGER_NAME);
            String groupName = rs.getString(COL_TRIGGER_GROUP);
            list.add(triggerKey(triggerName, groupName));
        }
        return list;
    } finally {
        closeResultSet(rs);
        closeStatement(ps);
    }
}
 
源代码16 项目: lams   文件: JobStoreSupport.java
/**
 * <p>
 * Pause the <code>{@link org.quartz.Trigger}</code> with the given name.
 * </p>
 * 
 * @see #resumeTrigger(Connection, TriggerKey)
 */
public void pauseTrigger(Connection conn, 
        TriggerKey triggerKey)
    throws JobPersistenceException {

    try {
        String oldState = getDelegate().selectTriggerState(conn,
                triggerKey);

        if (oldState.equals(STATE_WAITING)
                || oldState.equals(STATE_ACQUIRED)) {

            getDelegate().updateTriggerState(conn, triggerKey,
                    STATE_PAUSED);
        } else if (oldState.equals(STATE_BLOCKED)) {
            getDelegate().updateTriggerState(conn, triggerKey,
                    STATE_PAUSED_BLOCKED);
        }
    } catch (SQLException e) {
        throw new JobPersistenceException("Couldn't pause trigger '"
                + triggerKey + "': " + e.getMessage(), e);
    }
}
 
源代码17 项目: sakai   文件: SchedulerTool.java
public void validateTriggerName(FacesContext context, UIComponent component,
    Object object)
{
  if (object instanceof String)
  {
    String value = (String)object;
    try
    {
      Trigger trigger = schedulerManager.getScheduler().getTrigger(TriggerKey.triggerKey(value, Scheduler.DEFAULT_GROUP));
      if (trigger != null)
      {
        FacesMessage message = new FacesMessage(rb.getString("existing_trigger_name"));
        message.setSeverity(FacesMessage.SEVERITY_WARN);
        throw new ValidatorException(message);
      }
    }
    catch (SchedulerException e)
    {
      log.error("Scheduler down!");
    }
  }
}
 
源代码18 项目: sakai   文件: ScheduledInvocationManagerImpl.java
@Transactional(propagation = REQUIRES_NEW)
public DelayedInvocation[] findDelayedInvocations(String componentId, String opaqueContext) {
	log.debug("componentId=" + componentId + ", opaqueContext=" + opaqueContext);
	Collection<String> uuids = dao.find(componentId, opaqueContext);
	List<DelayedInvocation> invocations = new ArrayList<>();
	for (String uuid: uuids) {
		TriggerKey key = new TriggerKey(uuid, GROUP_NAME);
		try {
			Trigger trigger = schedulerFactory.getScheduler().getTrigger(key);
			if (trigger == null) {
				log.error("Failed to trigger with key: {}", key);
			} else {
				invocations.add(new DelayedInvocation(trigger.getKey().getName(), trigger.getNextFireTime(), key.getName(), opaqueContext));
			}
		} catch (SchedulerException e) {
			log.warn("Problem finding delayed invocations.", e);
			return null;
		}
	}
	return invocations.toArray(new DelayedInvocation[]{});
}
 
源代码19 项目: elasticsearch-quartz   文件: ScheduleService.java
public void resumeTrigger(final TriggerKey triggerKey) {
    try {
        scheduler.resumeTrigger(triggerKey);
    } catch (final SchedulerException e) {
        throw new QuartzSchedulerException(e);
    }
}
 
源代码20 项目: fixflow   文件: ScheduleServiceImpl.java
public void continueTrigger(String triggerName, String triggerGroup) {
	if(!getIsEnabled()){
		throw new FixFlowScheduleException(ExceptionCode.QUARZTEXCEPTION_ISENABLE);
	}
	Scheduler scheduler = getScheduler();
	TriggerKey tKey = new TriggerKey(triggerName,triggerGroup);
	try {
		scheduler.resumeTrigger(tKey);
	} catch (SchedulerException e) {
		throw new FixFlowException(e.getMessage(),e);
	}
}
 
源代码21 项目: lams   文件: RemoteScheduler.java
/**
 * <p>
 * Calls the equivalent method on the 'proxied' <code>QuartzScheduler</code>.
 * </p>
 */
public boolean checkExists(TriggerKey triggerKey) throws SchedulerException {
    try {
        return getRemoteScheduler().checkExists(triggerKey);
    } catch (RemoteException re) {
        throw invalidateHandleCreateException(
                "Error communicating with remote scheduler.", re);
    }
}
 
源代码22 项目: redis-quartz   文件: RedisJobStore.java
/**
 * Pause triggers.
 *
 * @param triggerGroupHashKey the trigger group hash key
 * @param jedis thread-safe redis connection
 * @throws JobPersistenceException
 */
private boolean pauseTriggers(String triggerGroupHashKey, Jedis jedis) throws JobPersistenceException {
	if (jedis.sadd(PAUSED_TRIGGER_GROUPS_SET, triggerGroupHashKey) > 0) { 
		Set<String> triggers = jedis.smembers(triggerGroupHashKey);
		for(String trigger : triggers)
			pauseTrigger(new TriggerKey(trigger.split(":")[2], trigger.split(":")[1]), jedis);
		return true;
	}
	return false;
}
 
/**
    * addJob
    *
    * @param jobName
    * @param jobGroup
    * @param cronExpression
    * @return
    * @throws SchedulerException
    */
public static boolean addJob(String jobName, String jobGroup, String cronExpression) throws SchedulerException {
   	// TriggerKey : name + group
       TriggerKey triggerKey = TriggerKey.triggerKey(jobName, jobGroup);
       JobKey jobKey = new JobKey(jobName, jobGroup);
       
       // TriggerKey valid if_exists
       if (checkExists(jobName, jobGroup)) {
           logger.info(">>>>>>>>> addJob fail, job already exist, jobGroup:{}, jobName:{}", jobGroup, jobName);
           return false;
       }
       
       // CronTrigger : TriggerKey + cronExpression	// withMisfireHandlingInstructionDoNothing 忽略掉调度终止过程中忽略的调度
       CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression).withMisfireHandlingInstructionDoNothing();
       CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build();

       // JobDetail : jobClass
	Class<? extends Job> jobClass_ = RemoteHttpJobBean.class;   // Class.forName(jobInfo.getJobClass());
       
	JobDetail jobDetail = JobBuilder.newJob(jobClass_).withIdentity(jobKey).build();
       /*if (jobInfo.getJobData()!=null) {
       	JobDataMap jobDataMap = jobDetail.getJobDataMap();
       	jobDataMap.putAll(JacksonUtil.readValue(jobInfo.getJobData(), Map.class));	
       	// JobExecutionContext context.getMergedJobDataMap().get("mailGuid");
	}*/
       
       // schedule : jobDetail + cronTrigger
       Date date = scheduler.scheduleJob(jobDetail, cronTrigger);

       logger.info(">>>>>>>>>>> addJob success, jobDetail:{}, cronTrigger:{}, date:{}", jobDetail, cronTrigger, date);
       return true;
   }
 
源代码24 项目: lams   文件: RemoteMBeanScheduler.java
/**
 * <p>
 * Calls the equivalent method on the 'proxied' <code>QuartzScheduler</code>.
 * </p>
 */
public boolean checkExists(TriggerKey triggerKey) throws SchedulerException {
    return (Boolean)invoke(
            "checkExists", 
            new Object[] { triggerKey }, 
            new String[] { TriggerKey.class.getName() });
}
 
源代码25 项目: jeecg-cloud   文件: QuartzJobServiceImpl.java
/**
 * 删除定时任务
 * 
 * @param jobClassName
 */
private void schedulerDelete(String jobClassName) {
	try {
		scheduler.pauseTrigger(TriggerKey.triggerKey(jobClassName));
		scheduler.unscheduleJob(TriggerKey.triggerKey(jobClassName));
		scheduler.deleteJob(JobKey.jobKey(jobClassName));
	} catch (Exception e) {
		log.error(e.getMessage(), e);
		throw new JeecgBootException("删除定时任务失败");
	}
}
 
/**
 * 删除定时任务
 * 
 * @param jobClassName
 */
private void schedulerDelete(String jobClassName) {
	try {
		scheduler.pauseTrigger(TriggerKey.triggerKey(jobClassName));
		scheduler.unscheduleJob(TriggerKey.triggerKey(jobClassName));
		scheduler.deleteJob(JobKey.jobKey(jobClassName));
	} catch (Exception e) {
		log.error(e.getMessage(), e);
		throw new JeecgBootException("删除定时任务失败");
	}
}
 
源代码27 项目: teaching   文件: QuartzJobServiceImpl.java
/**
 * 删除定时任务
 * 
 * @param jobClassName
 */
private void schedulerDelete(String jobClassName) {
	try {
		scheduler.pauseTrigger(TriggerKey.triggerKey(jobClassName));
		scheduler.unscheduleJob(TriggerKey.triggerKey(jobClassName));
		scheduler.deleteJob(JobKey.jobKey(jobClassName));
	} catch (Exception e) {
		log.error(e.getMessage(), e);
		throw new JeecgBootException("删除定时任务失败");
	}
}
 
源代码28 项目: elasticsearch-quartz   文件: ScheduleService.java
public boolean unscheduleJobs(final List<TriggerKey> triggerKeys) {
    try {
        return scheduler.unscheduleJobs(triggerKeys);
    } catch (final SchedulerException e) {
        throw new QuartzSchedulerException(e);
    }
}
 
@Test
public void assertRescheduleJobSuccess() throws SchedulerException {
    when(scheduler.getTrigger(TriggerKey.triggerKey("test_job_Trigger"))).thenReturn(new CronTriggerImpl());
    ReflectionUtils.setFieldValue(jobScheduleController, "scheduler", scheduler);
    jobScheduleController.rescheduleJob("0/1 * * * * ?");
    verify(scheduler).rescheduleJob(eq(TriggerKey.triggerKey("test_job_Trigger")), any());
}
 
源代码30 项目: nexus-public   文件: JobStoreImpl.java
@Override
public void resumeTrigger(final TriggerKey triggerKey) throws JobPersistenceException {
  executeWrite(db -> {
    resumeTrigger(db, triggerKey);
    return null;
  });
}
 
 类所在包
 同包方法