我創建了一個完整的功能性批處理過程,我手動運行運行一個Launcher.java,它具有一個主方法並執行我定義的作業(此作業是我在xml中定義的,它作爲我的主要參數),這很好,現在我期望將它用於生產,爲此我需要配置該進程以在西班牙的每天早晨一天運行,我該怎麼做?這是我的啓動(如果我用鼠標右鍵單擊原樣運行> Java應用程序,它工作正常,但我怎麼做一個批處理,正如我需要它嗎?)在黎明時自動運行批處理
public final class Launcher {
private static final String LOG_DECORATOR = "****************************************.";
private static final Logger LOG = Logger.getLogger("batch");
private static final Long MIL = 1000L;
private Launcher(){
throw new UnsupportedOperationException();
}
public static void main(String[] args){
LOG.info(LOG_DECORATOR);
LOG.info(" INICIO DEL PROCESO ");
LOG.info(LOG_DECORATOR);
LOG.info("Cargando datos de configuracion");
final ApplicationContext applicationContext = new ClassPathXmlApplicationContext(args[0]);
final PropertyFacade property = applicationContext.getBean(PropertyFacade.class);
Assert.notNull(property, "Datos de configuracion no cargados correctamente");
final String entorno = property.property("entorno");
LOG.info("Entorno: ".concat(entorno));
final JobLauncher jobLauncher = (JobLauncher) applicationContext.getBean("jobLauncher");
final Job job = (Job) applicationContext.getBean("job");
long tiempoComenzar;
long tiempoTerminar;
tiempoComenzar = System.currentTimeMillis();
try {
final JobExecution execution = jobLauncher.run(job, new JobParameters());
LOG.info("Job Status : " + execution.getStatus());
LOG.info("Job completed");
} catch (JobExecutionAlreadyRunningException e) {
LOG.info("Error Launcher: ".concat(e.toString()));
LOG.error("Exception Launcher",e);
} catch(IllegalArgumentException e){
LOG.info("Error Launcher: ".concat(e.toString()));
LOG.error("Exception Launcher",e);
} catch(JobInstanceAlreadyCompleteException e){
LOG.info("Error Launcher: ".concat(e.toString()));
LOG.error("Exception Launcher",e);
} catch(JobParametersInvalidException e){
LOG.info("Error Launcher: ".concat(e.toString()));
LOG.error("Exception Launcher",e);
} catch(JobRestartException e){
LOG.info("Error Launcher: ".concat(e.toString()));
LOG.error("Exception Launcher",e);
}finally {
((ConfigurableApplicationContext) applicationContext).close();
tiempoTerminar = System.currentTimeMillis();
final long tiempoDedicado = (tiempoTerminar - tiempoComenzar)/MIL;
LOG.info(
"Fin. Tiempo dedicado a la consulta: ".concat(String.valueOf(tiempoDedicado)).concat(" segundos."));
LOG.info(LOG_DECORATOR);
LOG.info(" FIN DEL PROCESO ");
LOG.info(LOG_DECORATOR);
}
}
}
這是工作
我感謝你的幫助。
您的代碼與問題無關,與*相關的是:您的代碼在哪個操作系統上運行?它有一個內置的任務調度器嗎? (例如cron) – alfasin
感謝您的回答,在Windows上運行,不,我不知道正在嘗試理解或知道如何執行的任務的程序員,該任務執行3個步驟,這些步驟在三類。 Java(3任務) – jaxonjma
使用Quartz。它建立一個類似於cron的調度器。 http://www.quartz-scheduler.org/ – Dakoda