あなたは実行が揮発性でないときに拒否権が追加されますあなたのスケジューラに
this.scheduler.addGlobalTriggerListener(new DebugExecutionFilter());
デバッグ実行フィルタをトリガフィルタを追加しようとすることができます(すぐに実行するようにスケジュールされていない)、あなたはデバッグモードです。
private static class DebugExecutionFilter implements TriggerListener
{
public DebugExecutionFilter()
{
}
@Override
public String getName()
{
return "Task execution filter";
}
@Override
public void triggerFired(Trigger trigger, JobExecutionContext context)
{
// Do nothing
}
/* (non-Javadoc)
*
* @see org.quartz.TriggerListener#vetoJobExecution(org.quartz.Trigger, org.quartz.JobExecutionContext) */
@Override
@SuppressWarnings("unchecked")
/**
* A veto is added if :
* - For non volatile trigger if we are in debug mode
*/
public boolean vetoJobExecution(Trigger trigger, JobExecutionContext context)
{
try
{
//
if (!trigger.isVolatile() && isDebugMode())
{
return true;
}
//task is run by scheduler.triggerJobWithVolatileTrigger() for immediate schedule
//or task is schedule and we are not in debugMode
return false;
}
@Override
public void triggerMisfired(Trigger trigger)
{
// do nothing
}
@Override
public void triggerComplete(Trigger trigger, JobExecutionContext context, int triggerInstructionCode)
{
// do nothing
}
}
回答ありがとうございました!たぶん私は問題を正確には説明していないかもしれませんが、実際には非一時停止トリガを開発モードで起動する必要があります。開発モードでは、スケジューラはスタンバイ状態のままで、すべてのトリガはデフォルトで一時停止されます。スケジュールされたジョブページに移動してスケジューラの1つを手動で起動すると(各ジョブの横に「今すぐ実行」ボタンがあります)、他のすべてのジョブが失敗します。私は基本的に、開発モードで失業していない仕事を何もしないことを望んでいます - これを行うグローバルな方法がありますか? –