运行带参数的批处理
问题描述:
您好我想用Spring批处理在Java中运行批处理流程,我需要将batchContext.xml像参数传递给我的主,但我不知道它是如何做到的,这是我启动:运行带参数的批处理
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");
for(Object object: args){
System.out.println(object);
}
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));
System.setProperty("java.io.tmpdir", property.property("tempFiles"));
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);
}
}
}
,这是我的工作区
我知道这是在这个界面:
但是什么是正确的变量? 我感谢所有帮助
要访问此菜单中,您可以: *右上运行作为 *运行配置 发射 *点击*参数
答
我知道了,在接口的默认路径在我的情况是“SRC-RECURSOS”,(这是我的Java版本的名称,因为它是一个老项目,其他版本将的src/main/JAVA)
而且我可以把作为参数:
“/batch/batchContext.xml “就像带引号
而且这个工作完美,感谢您抽出时间
您可以使用完整路径吗?这将是最简单的。否则,您将需要使用jar所在的目录中的相对路径。 – user3673613
为什么不使用Spring Boot? –
我该怎么做? – jaxonjma