/** * Given the name of a valid checkpoint subdirectory in the checkpoints directory, create a * Checkpoint instance, and insert it into all Checkpointable beans. * * @param selectedCheckpoint */ public synchronized void setRecoveryCheckpointByName(String selectedCheckpoint) { if (isRunning) { throw new RuntimeException("may not set recovery Checkpoint after launch"); } Checkpoint recoveryCheckpoint = new Checkpoint(); recoveryCheckpoint.getCheckpointDir().setBase(getCheckpointsDir()); recoveryCheckpoint.getCheckpointDir().setPath(selectedCheckpoint); recoveryCheckpoint.getCheckpointDir().setConfigurer(appCtx.getBean(ConfigPathConfigurer.class)); recoveryCheckpoint.afterPropertiesSet(); setRecoveryCheckpoint(recoveryCheckpoint); Map<String, Checkpointable> toSetRecovery = appCtx.getBeansOfType(Checkpointable.class); for (Checkpointable c : toSetRecovery.values()) { c.setRecoveryCheckpoint(recoveryCheckpoint); } }