2009-06-29 15 views

Respuesta

0

Supongo que una forma es acceder a la base de datos directamente, aunque es un poco arriesgado ya que la API maneja eso completamente.

Existe un problema en su Jira para este propósito. Su conclusión es que necesita revisar el mecanismo de programación si desean atender al clúster.

puede hacer referencia a http://jira.opensymphony.com/browse/QUARTZ-372

3

Parece revisión del mecanismo de programación no está sucediendo en cualquier momento pronto.

lo tanto, aquí es como yo estoy comprobando la tabla directamente - añadir soporte grupo si lo desea:

class QuartzClusterJobStatusService 
{ 
    def quartzScheduler 

    boolean isJobRunning(String job) { 
     return isJobRunningHere(job) || isJobRunningElsewhere(job) 
    } 

    boolean isJobRunningHere(String job) { 
     for (JobExecutionContext j : quartzScheduler.getCurrentlyExecutingJobs()) { 
      if (new JobKey(job,"GRAILS_JOBS").equals(j.jobDetail.key)) { 
       return true 
      } 
     } 
     return false 
    } 

    boolean isJobRunningElsewhere(String job) { 
     JobStoreSupport js = quartzScheduler.sched.resources.jobStore 
     if (!js.isClustered()) { 
      return false 
     } 
     Connection conn = DBConnectionManager.getInstance().getConnection(js.getDataSource()); 
     PreparedStatement stmt = null 
     try { 
      stmt = conn.prepareStatement("SELECT 1 FROM " + js.getTablePrefix() + "FIRED_TRIGGERS where JOB_NAME = ?") 
      stmt.setString(1, job) 
      ResultSet rs = stmt.executeQuery() 
      return rs.next() 
     } finally { 
      if (stmt != null) 
       stmt.close() 
     } 
    } 
} 
Cuestiones relacionadas