I'm confused by your question. I was just thinking you could create something like this and use it as your JobLauncher instead of using the SimpleJobLauncher directly:
Code:
public class RelaunchingJobLauncher implements JobLauncher {
private JobLauncher simpleJobLauncher;
public JobExecution run(Job job, JobParameters jobParameters) {
JobExecution jobExecution;
do {
jobExecution = simpleJobLauncher.run(job, jobParameters);
} while(jobExecution.getStatus() == BatchStatus.FAILED)
return jobExecution;
}
}