List of usage examples for org.springframework.batch.core UnexpectedJobExecutionException UnexpectedJobExecutionException
public UnexpectedJobExecutionException(String msg, Throwable nested)
From source file:trionsoft.test.StepRunner.java
/** * Launch the given job//from w w w .j av a2 s.c om * * @param job * @param jobParameters */ private JobExecution launchJob(Job job, JobParameters jobParameters) { try { return this.launcher.run(job, jobParameters); } catch (JobExecutionAlreadyRunningException e) { throw new UnexpectedJobExecutionException("Step runner encountered exception.", e); } catch (JobRestartException e) { throw new UnexpectedJobExecutionException("Step runner encountered exception.", e); } catch (JobInstanceAlreadyCompleteException e) { throw new UnexpectedJobExecutionException("Step runner encountered exception.", e); } catch (JobParametersInvalidException e) { throw new UnexpectedJobExecutionException("Step runner encountered exception.", e); } }
From source file:org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.java
@Override RepeatStatus doExecute(StepContribution contribution, ChunkContext chunkContext, JobExecution jobExecution) throws Exception { final GeoServer geoserver = backupFacade.getGeoServer(); final GeoServerDataDirectory dd = backupFacade.getGeoServerDataDirectory(); final ResourceStore resourceStore = dd.getResourceStore(); try {/*from w ww . ja v a 2 s. c o m*/ if (!isNew()) { doBackup(jobExecution, geoserver, dd, resourceStore); } else { doRestore(jobExecution, geoserver, dd); } } catch (Exception e) { logValidationExceptions((ValidationResult) null, new UnexpectedJobExecutionException( "Exception occurred while storing GeoServer globals and services settings!", e)); } return RepeatStatus.FINISHED; }
From source file:org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.java
/** * Perform Backup/*ww w . j a v a2s . c o m*/ * * @param jobExecution * @param geoserver * @param dd * @param resourceStore * @throws Exception * @throws IOException */ private void doBackup(JobExecution jobExecution, final GeoServer geoserver, final GeoServerDataDirectory dd, final ResourceStore resourceStore) throws Exception { try { final String outputFolderURL = jobExecution.getJobParameters().getString(Backup.PARAM_OUTPUT_FILE_PATH); Resource targetBackupFolder = Resources.fromURL(outputFolderURL); // Store GeoServer Global Info doWrite(geoserver.getGlobal(), targetBackupFolder, "global.xml"); // Store GeoServer Global Settings doWrite(geoserver.getSettings(), targetBackupFolder, "settings.xml"); // Store GeoServer Global Logging Settings doWrite(geoserver.getLogging(), targetBackupFolder, "logging.xml"); // Store GeoServer Global Services for (ServiceInfo service : geoserver.getServices()) { // Local Services will be saved later on ... if (service.getWorkspace() == null) { doWrite(service, targetBackupFolder, "services"); } } // Save Workspace specific settings Resource targetWorkspacesFolder = BackupUtils.dir(targetBackupFolder, "workspaces"); // Store Default Workspace if (filteredWorkspace(getCatalog().getDefaultWorkspace())) { doWrite(getCatalog().getDefaultNamespace(), targetWorkspacesFolder, "defaultnamespace.xml"); doWrite(getCatalog().getDefaultWorkspace(), targetWorkspacesFolder, "default.xml"); } // Store Workspace Specific Settings and Services for (WorkspaceInfo ws : getCatalog().getWorkspaces()) { if (filteredWorkspace(ws)) { if (geoserver.getSettings(ws) != null) { doWrite(geoserver.getSettings(ws), BackupUtils.dir(targetWorkspacesFolder, ws.getName()), "settings.xml"); } if (geoserver.getServices(ws) != null) { for (ServiceInfo service : geoserver.getServices(ws)) { doWrite(service, targetWorkspacesFolder, ws.getName()); } } // Backup other configuration bits, like images, palettes, user projections and so on... GeoServerDataDirectory wsDd = new GeoServerDataDirectory( dd.get(Paths.path("workspaces", ws.getName())).dir()); backupRestoreAdditionalResources(wsDd.getResourceStore(), targetWorkspacesFolder.get(ws.getName())); // Backup Style SLDs for (StyleInfo sty : getCatalog().getStylesByWorkspace(ws)) { Resource styResource = wsDd.get(Paths.path("styles", sty.getFilename())); if (Resources.exists(styResource)) { Resources.copy(styResource.file(), BackupUtils.dir(targetWorkspacesFolder.get(ws.getName()), "styles")); } } } } // Backup GeoServer Plugins final GeoServerResourceLoader targetGeoServerResourceLoader = new GeoServerResourceLoader( targetBackupFolder.dir()); for (GeoServerPluginConfigurator pluginConfig : GeoServerExtensions .extensions(GeoServerPluginConfigurator.class)) { // On restore invoke 'pluginConfig.loadConfiguration(resourceLoader);' after having replaced the config files. pluginConfig.saveConfiguration(targetGeoServerResourceLoader); } for (GeoServerPropertyConfigurer props : GeoServerExtensions .extensions(GeoServerPropertyConfigurer.class)) { // On restore invoke 'props.reload();' after having replaced the properties files. Resource configFile = props.getConfigFile(); if (configFile != null && Resources.exists(configFile)) { Resource targetDir = Files.asResource(targetGeoServerResourceLoader.findOrCreateDirectory( Paths.convert(dd.getResourceLoader().getBaseDirectory(), configFile.parent().dir()))); Resources.copy(configFile.file(), targetDir); } } // Backup other configuration bits, like images, palettes, user projections and so on... backupRestoreAdditionalResources(resourceStore, targetBackupFolder); // Backup GWC Configuration bits try { if (GeoServerExtensions.bean("gwcGeoServervConfigPersister") != null) { backupGWCSettings(targetBackupFolder); } } catch (NoSuchBeanDefinitionException e) { LOGGER.log(Level.WARNING, "Skipped GWC GeoServer Config Persister: ", e); } } catch (Exception e) { logValidationExceptions((ValidationResult) null, new UnexpectedJobExecutionException( "Exception occurred while storing GeoServer globals and services settings!", e)); } }
From source file:org.geoserver.backuprestore.tasklet.CatalogBackupRestoreTasklet.java
/** * @param jobExecution/*from w w w . j a va 2 s . c o m*/ * @param geoserver * @param dd * @throws Exception * @throws IOException * @throws UnexpectedJobExecutionException */ @SuppressWarnings("unused") private void doRestore(JobExecution jobExecution, final GeoServer geoserver, final GeoServerDataDirectory dd) throws Exception { final String inputFolderURL = jobExecution.getJobParameters().getString(Backup.PARAM_INPUT_FILE_PATH); Resource sourceRestoreFolder = Resources.fromURL(inputFolderURL); Resource sourceWorkspacesFolder = null; // Try first to load all the settings available into the source restore folder GeoServerInfo newGeoServerInfo = null; SettingsInfo newSettings = null; LoggingInfo newLoggingInfo = null; try { newGeoServerInfo = (GeoServerInfo) doRead(sourceRestoreFolder, "global.xml"); newSettings = (SettingsInfo) doRead(sourceRestoreFolder, "settings.xml"); newLoggingInfo = (LoggingInfo) doRead(sourceRestoreFolder, "logging.xml"); } catch (Exception e) { logValidationExceptions((ValidationResult) null, new UnexpectedJobExecutionException( "Exception occurred while storing GeoServer globals and services settings!", e)); } // Save Workspace specific settings try { sourceWorkspacesFolder = BackupUtils.dir(sourceRestoreFolder, "workspaces"); // Set Default Namespace and Workspace if (Resources.exists(sourceWorkspacesFolder.get("default.xml"))) { NamespaceInfo newDefaultNamespace = (NamespaceInfo) doRead(sourceWorkspacesFolder, "defaultnamespace.xml"); WorkspaceInfo newDefaultWorkspace = (WorkspaceInfo) doRead(sourceWorkspacesFolder, "default.xml"); getCatalog().setDefaultNamespace(newDefaultNamespace); getCatalog().setDefaultWorkspace(newDefaultWorkspace); } } catch (Exception e) { logValidationExceptions((ValidationResult) null, new UnexpectedJobExecutionException( "Exception occurred while storing GeoServer globals and services settings!", e)); } // RESTORE // TODO: Save old settings /* * GeoServerInfo oldGeoServerInfo = geoserver.getGlobal(); SettingsInfo oldSettings = geoserver.getSettings(); LoggingInfo oldLoggingInfo = * geoserver.getLogging(); WorkspaceInfo oldDefaultWorkspace = geoserver.getCatalog().getDefaultWorkspace(); NamespaceInfo oldDefaultNamespace * = geoserver.getCatalog().getDefaultNamespace(); */ // Do this *ONLY* when DRY-RUN-MODE == OFF if (!isDryRun()) { try { hardRestore(geoserver, dd, sourceRestoreFolder, sourceWorkspacesFolder, newGeoServerInfo, newLoggingInfo); } catch (Exception e) { logValidationExceptions((ValidationResult) null, new UnexpectedJobExecutionException( "Exception occurred while storing GeoServer globals and services settings!", e)); } finally { /* * TODO: - Handle Revert ?? */ } } else { // DRY-RUN-MODE ON: Try to check backup files consistency as much as possible try { // Temporary GeoServer Data Dir just for testing GeoServerDataDirectory td = new GeoServerDataDirectory(BackupUtils.tmpDir().dir()); softRestore(geoserver, td, sourceRestoreFolder, sourceWorkspacesFolder, newGeoServerInfo, newLoggingInfo); } catch (Exception e) { logValidationExceptions((ValidationResult) null, new UnexpectedJobExecutionException( "Exception occurred while storing GeoServer globals and services settings!", e)); } finally { } } }
From source file:org.springframework.batch.core.launch.support.SimpleJobOperator.java
@Override public Long restart(long executionId) throws JobInstanceAlreadyCompleteException, NoSuchJobExecutionException, NoSuchJobException, JobRestartException, JobParametersInvalidException { logger.info("Checking status of job execution with id=" + executionId); JobExecution jobExecution = findExecutionById(executionId); String jobName = jobExecution.getJobInstance().getJobName(); Job job = jobRegistry.getJob(jobName); JobParameters parameters = jobExecution.getJobParameters(); logger.info(String.format("Attempting to resume job with name=%s and parameters=%s", jobName, parameters)); try {//w ww . j a v a2 s . c o m return jobLauncher.run(job, parameters).getId(); } catch (JobExecutionAlreadyRunningException e) { throw new UnexpectedJobExecutionException( String.format(ILLEGAL_STATE_MSG, "job execution already running", jobName, parameters), e); } }
From source file:org.springframework.batch.core.launch.support.SimpleJobOperator.java
@Override public Long start(String jobName, String parameters) throws NoSuchJobException, JobInstanceAlreadyExistsException, JobParametersInvalidException { logger.info("Checking status of job with name=" + jobName); JobParameters jobParameters = jobParametersConverter .getJobParameters(PropertiesConverter.stringToProperties(parameters)); if (jobRepository.isJobInstanceExists(jobName, jobParameters)) { throw new JobInstanceAlreadyExistsException( String.format("Cannot start a job instance that already exists with name=%s and parameters=%s", jobName, parameters)); }//from www . j a va2 s . c o m Job job = jobRegistry.getJob(jobName); logger.info(String.format("Attempting to launch job with name=%s and parameters=%s", jobName, parameters)); try { return jobLauncher.run(job, jobParameters).getId(); } catch (JobExecutionAlreadyRunningException e) { throw new UnexpectedJobExecutionException( String.format(ILLEGAL_STATE_MSG, "job execution already running", jobName, parameters), e); } catch (JobRestartException e) { throw new UnexpectedJobExecutionException( String.format(ILLEGAL_STATE_MSG, "job not restartable", jobName, parameters), e); } catch (JobInstanceAlreadyCompleteException e) { throw new UnexpectedJobExecutionException( String.format(ILLEGAL_STATE_MSG, "job already complete", jobName, parameters), e); } }
From source file:org.springframework.batch.core.launch.support.SimpleJobOperator.java
@Override public Long startNextInstance(String jobName) throws NoSuchJobException, JobParametersNotFoundException, UnexpectedJobExecutionException, JobParametersInvalidException { logger.info("Locating parameters for next instance of job with name=" + jobName); Job job = jobRegistry.getJob(jobName); List<JobInstance> lastInstances = jobExplorer.getJobInstances(jobName, 0, 1); JobParametersIncrementer incrementer = job.getJobParametersIncrementer(); if (incrementer == null) { throw new JobParametersNotFoundException("No job parameters incrementer found for job=" + jobName); }//from w ww . j a v a 2s. com JobParameters parameters; if (lastInstances.isEmpty()) { parameters = incrementer.getNext(new JobParameters()); if (parameters == null) { throw new JobParametersNotFoundException("No bootstrap parameters found for job=" + jobName); } } else { List<JobExecution> lastExecutions = jobExplorer.getJobExecutions(lastInstances.get(0)); parameters = incrementer.getNext(lastExecutions.get(0).getJobParameters()); } logger.info(String.format("Attempting to launch job with name=%s and parameters=%s", jobName, parameters)); try { return jobLauncher.run(job, parameters).getId(); } catch (JobExecutionAlreadyRunningException e) { throw new UnexpectedJobExecutionException( String.format(ILLEGAL_STATE_MSG, "job already running", jobName, parameters), e); } catch (JobRestartException e) { throw new UnexpectedJobExecutionException( String.format(ILLEGAL_STATE_MSG, "job not restartable", jobName, parameters), e); } catch (JobInstanceAlreadyCompleteException e) { throw new UnexpectedJobExecutionException( String.format(ILLEGAL_STATE_MSG, "job instance already complete", jobName, parameters), e); } }
From source file:org.springframework.batch.core.partition.gemfire.GemfirePartitionFunction.java
private StepExecution execute(StepExecution stepExecution) { try {/*from w w w . ja v a 2 s .co m*/ step.execute(stepExecution); } catch (JobInterruptedException e) { stepExecution.getJobExecution().setStatus(BatchStatus.STOPPING); throw new UnexpectedJobExecutionException("TODO: this should result in a stop", e); } return stepExecution; }