List of usage examples for org.springframework.batch.core.launch.support CommandLineJobRunner message
String message
To view the source code for org.springframework.batch.core.launch.support CommandLineJobRunner message.
Click Source Link
From source file:org.springframework.batch.core.launch.support.CommandLineJobRunner.java
@SuppressWarnings("resource") int start(String jobPath, String jobIdentifier, String[] parameters, Set<String> opts) { ConfigurableApplicationContext context = null; try {//from w ww . ja v a 2 s . c o m try { context = new AnnotationConfigApplicationContext(Class.forName(jobPath)); } catch (ClassNotFoundException cnfe) { context = new ClassPathXmlApplicationContext(jobPath); } context.getAutowireCapableBeanFactory().autowireBeanProperties(this, AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, false); Assert.state(launcher != null, "A JobLauncher must be provided. Please add one to the configuration."); if (opts.contains("-restart") || opts.contains("-next")) { Assert.state(jobExplorer != null, "A JobExplorer must be provided for a restart or start next operation. Please add one to the configuration."); } String jobName = jobIdentifier; JobParameters jobParameters = jobParametersConverter .getJobParameters(StringUtils.splitArrayElementsIntoProperties(parameters, "=")); Assert.isTrue(parameters == null || parameters.length == 0 || !jobParameters.isEmpty(), "Invalid JobParameters " + Arrays.asList(parameters) + ". If parameters are provided they should be in the form name=value (no whitespace)."); if (opts.contains("-stop")) { List<JobExecution> jobExecutions = getRunningJobExecutions(jobIdentifier); if (jobExecutions == null) { throw new JobExecutionNotRunningException( "No running execution found for job=" + jobIdentifier); } for (JobExecution jobExecution : jobExecutions) { jobExecution.setStatus(BatchStatus.STOPPING); jobRepository.update(jobExecution); } return exitCodeMapper.intValue(ExitStatus.COMPLETED.getExitCode()); } if (opts.contains("-abandon")) { List<JobExecution> jobExecutions = getStoppedJobExecutions(jobIdentifier); if (jobExecutions == null) { throw new JobExecutionNotStoppedException( "No stopped execution found for job=" + jobIdentifier); } for (JobExecution jobExecution : jobExecutions) { jobExecution.setStatus(BatchStatus.ABANDONED); jobRepository.update(jobExecution); } return exitCodeMapper.intValue(ExitStatus.COMPLETED.getExitCode()); } if (opts.contains("-restart")) { JobExecution jobExecution = getLastFailedJobExecution(jobIdentifier); if (jobExecution == null) { throw new JobExecutionNotFailedException( "No failed or stopped execution found for job=" + jobIdentifier); } jobParameters = jobExecution.getJobParameters(); jobName = jobExecution.getJobInstance().getJobName(); } Job job = null; if (jobLocator != null) { try { job = jobLocator.getJob(jobName); } catch (NoSuchJobException e) { } } if (job == null) { job = (Job) context.getBean(jobName); } if (opts.contains("-next")) { JobParameters nextParameters = getNextJobParameters(job); Map<String, JobParameter> map = new HashMap<String, JobParameter>(nextParameters.getParameters()); map.putAll(jobParameters.getParameters()); jobParameters = new JobParameters(map); } JobExecution jobExecution = launcher.run(job, jobParameters); return exitCodeMapper.intValue(jobExecution.getExitStatus().getExitCode()); } catch (Throwable e) { String message = "Job Terminated in error: " + e.getMessage(); logger.error(message, e); CommandLineJobRunner.message = message; return exitCodeMapper.intValue(ExitStatus.FAILED.getExitCode()); } finally { if (context != null) { context.close(); } } }
From source file:org.springframework.batch.core.launch.support.CommandLineJobRunner.java
/** * Launch a batch job using a {@link CommandLineJobRunner}. Creates a new * Spring context for the job execution, and uses a common parent for all * such contexts. No exception are thrown from this method, rather * exceptions are logged and an integer returned through the exit status in * a {@link JvmSystemExiter} (which can be overridden by defining one in the * Spring context).<br>/*from w w w . jav a 2 s . c o m*/ * Parameters can be provided in the form key=value, and will be converted * using the injected {@link JobParametersConverter}. * * @param args * <ul> * <li>-restart: (optional) if the job has failed or stopped and the most * should be restarted. If specified then the jobIdentifier parameter can be * interpreted either as the name of the job or the id of the job execution * that failed.</li> * <li>-next: (optional) if the job has a {@link JobParametersIncrementer} * that can be used to launch the next in a sequence</li> * <li>jobPath: the xml application context containing a {@link Job} * <li>jobIdentifier: the bean id of the job or id of the failed execution * in the case of a restart. * <li>jobParameters: 0 to many parameters that will be used to launch a * job. * </ul> * <p> * The options (<code>-restart, -next</code>) can occur anywhere in the * command line. * </p> */ public static void main(String[] args) throws Exception { CommandLineJobRunner command = new CommandLineJobRunner(); List<String> newargs = new ArrayList<String>(Arrays.asList(args)); try { if (System.in.available() > 0) { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String line = " "; while (line != null) { if (!line.startsWith("#") && StringUtils.hasText(line)) { if (logger.isDebugEnabled()) { logger.debug("Stdin arg: " + line); } newargs.add(line); } line = reader.readLine(); } } } catch (IOException e) { logger.warn("Could not access stdin (maybe a platform limitation)"); if (logger.isDebugEnabled()) { logger.debug("Exception details", e); } } Set<String> opts = new HashSet<String>(); List<String> params = new ArrayList<String>(); int count = 0; String jobPath = null; String jobIdentifier = null; for (String arg : newargs) { if (VALID_OPTS.contains(arg)) { opts.add(arg); } else { switch (count) { case 0: jobPath = arg; break; case 1: jobIdentifier = arg; break; default: params.add(arg); break; } count++; } } if (jobPath == null || jobIdentifier == null) { String message = "At least 2 arguments are required: JobPath/JobClass and jobIdentifier."; logger.error(message); CommandLineJobRunner.message = message; command.exit(1); return; } String[] parameters = params.toArray(new String[params.size()]); int result = command.start(jobPath, jobIdentifier, parameters, opts); command.exit(result); }