I only tried manually debugging.
the code of checkIfJobIsRunning:
Code:
package com.inprove.servicefarm.grid;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import java.util.TimerTask;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.TransactionCallbackWithoutResult;
import org.springframework.transaction.support.TransactionTemplate;
import com.inprove.servicefarm.job.Job;
import com.inprove.servicefarm.job.JobManager;
import com.inprove.servicefarm.job.JobWebservice;
import com.inprove.servicefarm.webfarm.WebFarmRepository;
public class CheckIfJobIsRunning extends TimerTask
{
JobManager jobManager;
WebFarmRepository webFarmRepository;
private TransactionTemplate transactionTemplate;
public void run()
{
transactionTemplate.execute(new TransactionCallbackWithoutResult()
{
protected void doInTransactionWithoutResult(TransactionStatus status)
{
List<Job> jobs = jobManager.getRunningJobs();
Iterator<Job> it = jobs.iterator();
while (it.hasNext())
{
Job job = it.next();
Calendar calendar = Calendar.getInstance();
long currentTime = calendar.getTimeInMillis();
long jobStatusTime = job.getCurrentStatusTime()
.getTimeInMillis();
long different = currentTime - jobStatusTime;
long diffMinutes = different / (60 * 1000);
if (diffMinutes > 2)
{
jobManager.stopJob(job.getId());
webFarmRepository.addNotification(
job.getOrganization(), job.getId(), "job",
"Job is stopped because there wasn't contact");
}
}
}
});
}
public void setTransactionManager(
PlatformTransactionManager transactionManager)
{
this.transactionTemplate = new TransactionTemplate(transactionManager);
}
public void setJobManager(JobManager jobManager)
{
this.jobManager = jobManager;
}
public void setWebFarmRepository(WebFarmRepository webFarmRepository)
{
this.webFarmRepository = webFarmRepository;
}
}
But the problem is when i but a bean in the timertask the bean isn't a singleton anymore.